Skip to content

Commit

Permalink
doc: Explain process.nextTick timing
Browse files Browse the repository at this point in the history
Provide more detailed explanation of the timing of `process.nextTick`
relative to I/O.
  • Loading branch information
isaacs committed Jul 16, 2013
1 parent be940b4 commit bd5ab9c
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions doc/api/process.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -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 event loop turn 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,
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit bd5ab9c

Please sign in to comment.