⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Node.js 微任务:Promise 与 process.nextTick

深入理解微任务队列,掌握 Promise.then 和 process.nextTick 的执行时机。 · 难度:入门 · +15XP

什么是微任务?

微任务(Microtask)是事件循环中更高优先级的任务队列。在 Node.js 中,微任务主要包括:process.nextTick 回调、Promise.then/catch/finally 回调、以及 queueMicrotask

微任务 vs 宏任务

类型示例执行时机
微任务Promise.then, nextTick, queueMicrotask当前宏任务结束后立即执行
宏任务setTimeout, setInterval, I/O, setImmediate事件循环的下一阶段

process.nextTick 的特殊性

process.nextTick 不属于微任务的标准定义,但优先级高于 Promise 回调。它会在事件循环的当前阶段结束前执行,即使其他微任务已经存在。

Promise.resolve().then(() => console.log('Promise'));
process.nextTick(() => console.log('nextTick'));
// 输出:nextTick (先于 Promise)

微任务队列处理规则

在每次宏任务完成后,事件循环会清空微任务队列。如果微任务中添加了新的微任务,它们会在当前批次中继续执行,直到队列为空。

process.nextTick(() => {
  console.log('第一个 nextTick');
  process.nextTick(() => console.log('嵌套 nextTick'));
});
console.log('同步代码');
// 输出:同步代码 -> 第一个 nextTick -> 嵌套 nextTick

练习提示

修改右侧代码,添加一个 Promise 和一个 process.nextTick,观察它们与 setTimeout 的执行顺序。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0