Node中的process.nextTick和setImmediate。

181 阅读1分钟

node.js提出了process.nextTick和setImmediate方法来处理异步任务

process.nextTick


process.nextTick(function A() {
  console.log(1);
  process.nextTick(function B(){console.log(2);});
});

setTimeout(function timeout() {
  console.log('TIMEOUT FIRED');
}, 0)

process.next的回调函数总是在当前执行栈的所有任务执行完之后执行,所以所有的nextTick回调都会下一次开始新的执行调用栈执行之前全部执行

由于只能在当前执行栈执行完之后执行,所以process.next不能用于递归调用

setImmediate

setImmediate(function A() {
  console.log(1);
  setImmediate(function B(){console.log(2);});
});

setTimeout(function timeout() {
  console.log('TIMEOUT FIRED');
}, 0);

setImmediate会在下一次执行调用栈之前执行

process.nextTick的执行效率比setImmediate高,因为它不用去检查下一次下一次执行调用栈的任务