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
为什么输出不同的结果?
答案 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/