Skip to content
This repository was archived by the owner on Apr 22, 2023. It is now read-only.
This repository was archived by the owner on Apr 22, 2023. It is now read-only.

setInterval doesn't comply with DOM-version #8066

@loyd

Description

@loyd

Checked on x86_64, v0.10.30 and v0.11.14-pre, linux.

Firslty, setInterval determines delay between executions. For setInterval(sleep(20), 100):

------|====----------------|====----------------|====---
     0    20              120  140             240  260

DOM-version setInterval determines delay between runs:

------|====-----------|====-----------|====-----------|=
     0    20         100  120        200  220        300

Use the following snippet to check it out:

var prev = Date.now();
setInterval(function() {
  var s = Date.now();
  while(Date.now() - s < 20);
  var e = Date.now();
  console.log('Start', s, 'End', e, 'Delta', s - prev);
  prev = e;
}, 100);

Node v0.11.14-pre 'Delta': 102, 124, 119, 120, 120, ...
Node v0.10.30 'Delta': 101, 102, 100, 100, 100, ...
DOM 'Delta': 100, 80, 81, 80, 80, 81, ...

Secondly, overlay of calls:

var prev = Date.now();
setInterval(function() {
  var s = Date.now();
  while(Date.now() - s < 200);
  var e = Date.now();
  console.log('Start', s, 'End', e, 'Delta', s - prev);
  prev = e;
}, 100);

Node v0.11.14-pre 'Delta': 101, 302, 300, 300, 300, ...
Node v0.10.30 'Delta': 101, 101, 100, 100, ...
DOM 'Delta': 101, 0, 0, 1, 0, 1, 0, 0, ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions