在下面的代码中,nodejs与浏览器之间关于事件循环的区别是什么?

时间:2018-03-29 01:41:55

标签: node.js

async function async1() {
    console.log("a");
    await  async2(); 
    console.log("b");
}
async function async2() {
   console.log( 'c');
}
console.log("d");
setTimeout(function () {
    console.log("e");
},0);
async1();
new Promise(function (resolve) {
    console.log("f");
    resolve();
}).then(function () {
    console.log("g");
});
console.log('h');

nodejs 运行时输出:d a c f h b g e

Google浏览器运行时输出:d a c f h g b e

为什么输出不同的结果?

1 个答案:

答案 0 :(得分:1)

我认为因为NodeJS有自己的定时器实现:

https://nodejs.org/dist/latest-v9.x/docs/api/timers.html

  

Node.js中的计时器函数实现了类似的API   计时器API由Web浏览器提供,但使用不同的内部   围绕Node.js事件循环构建的实现。

关于节点中的事件循环:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/