大佬们,小弟最近在学习 Node.js ,发现 Promise.then 中的代码会先于 process.nextTick 执行,网上资料普遍说的是 process.nextTick 会先于微任务执行,请问这是什么原因...
有如下代码:
console.log("script start");
setTimeout(() => {
console.log("setTimeout");
}, 0);
process.nextTick(() => console.log("nextTick"));
new Promise((resolve, reject) => {
console.log("promise1");
resolve(undefined);
console.log("promise2");
}).then(() => {
console.log("promise3");
});
console.log("script end");
执行结果为:
script start
promise1
promise2
script end
promise3 // 为什么会先于输出这个而不是 nextTick ??
nextTick
setTimeout
直接使用 Node.js 执行 ts 文件,代码执行环境: Node:v25.2.1 TypeScript:5.9.3
tsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"strictNullChecks": true
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.