Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

javascript
node.js
setimmediate
process.nexttick

setImmediate vs. process.nextTick in Node.js

Educative Answers Team

Asynchronous API in Node.js

Node.js is an event-driven, single-threaded runtime environment that can perform blocking operations in a non-blocking manner. Operations that might block a single thread are managed by different phases in the underlying event loop. You can read about the event loop here.

setImmediate()

setImmediate allows us to directly add a callback to the event queue. If you are familiar with the event loop, the check phase is specifically used to invoke callbacks set using the setImmediate method. Let’s see how it works:

console.log('This is the first log');

setImmediate(() => console.log('This was queued!'))

console.log('This is the second log');

process.nextTick()

Much like the setImmediate() method, process.nextTick takes a callback and adds it to a queue. However, this callback is then added to the nextTickQueue so that it will be executed as soon as the current phase ends. The loop will block until the callback is resolved completely. Therefore, taking recursive process.nextTick calls can cause I/O starvation as the event loop might never reach that phase. Let’s see how it works:

console.log('This is the first log');

process.nextTick(() => console.log('This was queued!'))

console.log('This is the second log');

setImmediate vs. process.nextTick

Both setImmediate and process.nextTick appear to be doing the same thing; however, you may prefer one over the other depending on your callback’s urgency. It is interesting to note that setImmediate adds callbacks to the event queue that are executed during the check phase, whereas process.nextTick executes callbacks immediately after the current phase. This irony has also been mentioned in the official documentation, however, changing the names could break a lot of packages and applications that use these methods.

The official documentation states:

We recommend that developers use setImmediate() in all cases because it’s easier to think about.

While process.nextTick is certainly useful, it also has the potential to cause I/O starvation. With more power comes more responsibility.

svg viewer

RELATED TAGS

javascript
node.js
setimmediate
process.nexttick
Copyright ©2022 Educative, Inc. All rights reserved
RELATED COURSES

View all Courses