This repository has been archived by the owner. It is now read-only.
Browse files

doc: Explain process.nextTick timing

Provide more detailed explanation of the timing of `process.nextTick`
relative to I/O.
  • Loading branch information...
isaacs committed Jul 13, 2013
1 parent 2c47030 commit 33d746c656d748635986a097ae74ea3208d649a2
Showing with 18 additions and 3 deletions.
  1. +18 −3 doc/api/process.markdown
@@ -454,14 +454,24 @@ This will generate:
## process.nextTick(callback)
-On the next loop around the event loop call this callback.
+* `callback` {Function}
+Once the current pass through the event loop runs to completion, call
+the callback function.
This is *not* a simple alias to `setTimeout(fn, 0)`, it's much more
-efficient. It typically runs before any other I/O events fire, but there
-are some exceptions.
+efficient. It runs before any additional I/O events (including
+timers) fire in subsequent ticks of the event loop.
+ console.log('start');
process.nextTick(function() {
console.log('nextTick callback');
+ console.log('scheduled');
+ // Output:
+ // start
+ // scheduled
+ // nextTick callback
This is important in developing APIs where you want to give the user the
chance to assign event handlers after an object has been constructed,
@@ -513,6 +523,11 @@ This approach is much better:
fs.stat('file', cb);
+Note: the nextTick queue is completely drained on each pass of the
+event loop **before** additional I/O is processed. As a result,
+recursively setting nextTick callbacks will block any I/O from
+happening, just like a `while(true);` loop.
## process.umask([mask])
Sets or reads the process's file mode creation mask. Child processes inherit

0 comments on commit 33d746c

Please sign in to comment.