MENU

node.js中setImmediate()与process.nextTick()的优先级

April 23, 2018 • 笔记,后端阅读设置

node.js中setImmediate()与process.nextTick()的优先级

tags:网站 Node.js


在node.js的异步编程中,立即异步执行一个任务的方法:

setTimeout(function () {
   //TODO

},0)

但定时器setTimeout() setInterval()定时是非精确的。
所以,还可以使用如下方法:

process.nextTick(function () {
   //TODO

});

setImmediate(function () {
   //TODO

});

两者使用方式类似,但是process.nextTick()优先级要高于setImmediate()

原文

process.nextTick()属于idle观察者,setImmediate()属于check观察者。在每一个轮询事件检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者。

结果验证:

setImmediate(function () {
   //TODO
    console.log(\'setImmediate\');
});

process.nextTick(function () {
    //TODO
    console.log(\'nextTick\');
});

console.log(\'end!\');

输出结果:

end!
nextTick
setImmediate

Process finished with exit code 0