Skip to main content

关于 Node.js 中的事件循环问题

  1. 关于 Node.js 中的事件循环问题。

    大佬们,小弟最近在学习 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
     }
    }
    
    


    via V2EX - 技术 (author: autumnshine)
👀 open eyes to see the world. 丨 site views: -