node中的process.nextTick()
文章类型:node
发布者:hp
发布时间:2025-02-21
process.nextTick()属于node中核心api,那么它怎么使用以及场景是怎么样的呢?
1:process.nextTick() 用于将回调函数放入 当前事件循环尾部,在 下一轮事件循环开始前立即执行。
2:它的优先级高于其他异步操作(如 setImmediate、setTimeout 等)
1:执行时机上=>
同步代码执行完成后立即执行
事件循环的 每个阶段切换前(如从 timers 到 I/O callbacks 阶段),优先清空 nextTick 队列
同步代码 → process.nextTick() → Promise微任务 → 宏任务(如 setImmediate、I/O 等)
2:优先级上=>
高于 Promise 微任务和所有宏任务(如 setImmediate、I/O 回调等)
1:延迟执行
console.log("Start");
process.nextTick(() => console.log("NextTick"));
console.log("End");
// 输出顺序:Start → End → NextTick
2:避免递归阻塞
function recursiveAsync() {
process.nextTick(() => {
// 避免堆栈溢出
recursiveAsync();
});
}
3:初始化后执行逻辑
class MyEmitter extends EventEmitter {
constructor() {
super();
process.nextTick(() => this.emit("ready"));
}
}
4:控制异步流程
console.log("Start");
process.nextTick(() => console.log("NextTick"));
setTimeout(() => console.log("Timeout"), 0);
// 输出顺序:Start → NextTick → Timeout
1:用途:立即(但异步)执行高优先级回调。
2:本质:微任务,执行时机介于同步代码和普通异步任务之间。
3:适用场景:初始化后操作、流程控制、避免阻塞递归等