Skip to content

Instantly share code, notes, and snippets.

@scottnonnenberg
Last active September 7, 2018 22:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scottnonnenberg/56597f27c6cd44dfbfee to your computer and use it in GitHub Desktop.
Save scottnonnenberg/56597f27c6cd44dfbfee to your computer and use it in GitHub Desktop.
What happens in node.js when you start a setInterval(), but do some synchronous work? setInterval() calls get dropped.
2015-03-23T19:41:49.232Z
2015-03-23T19:41:49.367Z
2015-03-23T19:41:49.470Z
2015-03-23T19:41:49.571Z
sync task start
sync task done
2015-03-23T19:41:50.632Z
2015-03-23T19:41:50.733Z
2015-03-23T19:41:50.834Z
^C
setInterval(function() {
var now = new Date();
console.log(now.toJSON());
}, 100);
setTimeout(function() {
var start = new Date();
var now = new Date();
console.log('sync task start');
while (now.getTime() - start.getTime() < 1000) {
now = new Date();
}
console.log('sync task done');
}, 500)
@im-danwu
Copy link

im-danwu commented Sep 7, 2018

Why would callbacks being called out of order? I assumed it was a single thread model, so the callbacks should be executed off one stack.

If callbacks can be called out of order, that would make shared state more difficult to manage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment