How process.nextTick() works in Node.js?

Jun 25, 2016

2 min read

#nodejs

The process object is a one of the few global objects provided by the Node.js core API. It can be access from anywhere, thus its methods can also be accessed. Such is a method called process.nextTick() which is used by developers in realtime applications everyday to defer the execution of a function until the next Event Loop Iteration.

Browser JavaScript introduced us functions like setTimeout() to defer tasks in the near future. The setTimeout() function takes a callback function and a number value representing the time after which the callback function will be executed, in milliseconds.

JavaScript icon

1setTimeout(callback, 0);

In Node.js, each iteration of an Event Loop is called a tick. To schedule a callback function to be invoked in the next iteration of the Event Loop, we use process.nextTick(). It just takes a callback with no time bound, since it will be executing in the next iteration of the Event Loop.

JavaScript icon

1process.nextTick(callback);

The difference between setTimeout() and process.nextTick() is that the process.nextTick() function is specific to the Node.js Event Loop. setTimeout() uses JavaScript runtime to schedule its own queue of events. When using process.nextTick(), callback function associated with it runs immediately after events in the Event Queue are processed by the Event Loop in a single iteration. In comparison to setTimeout(), it is faster since queue associated with setTimeout() or the JavaScript runtime.

JavaScript icon

1function cb() {
2 console.log('Processed in next iteration');
3}
4process.nextTick(cb);
5console.log('Processed in the first iteration');

The above snippet is an example of how process.nextTick() works. You can save the snippet in a file.js and run using \$node file.js from your terminal. You will definitely notice that the second console.log printed before the console.log associated with function cb().

JavaScript icon

1Processed in the first iteration
2Processed in next iteration

Further Reading:

🔗

Enjoyed this post? Sign up to my newsletter!

A periodic update about my recent blog posts and tutorials. Join 1300+ devs!

No spam, unsubscribe at any time!

Subscribe on Revue

HomeBlogNewsletterAbout meSpeakingEmail

©  2019-2022 Aman Mittal · All Rights Reserved