javascript node 事件循环相关执行顺序
最近笔试某小游戏厂的时候遇见 node event loop 相关的题. 烟雨仔一直认为自己对 event loop 已经很了解了, 但还是入了坑.
在阅读这篇文章之前, 如果你是想了解 浏览器
或 node
event loop 更加底层的内容, 那么请移步至 node 官方. 本篇只适合想要对 node.js event loop 相关执行顺序略有了解的新手.
1. 浏览器 event loop
以下代码在众多的面试笔试题中, 是挺常见的. 在 chrome 浏览器中按序应该打印:
start ;
async1 start;
async2;
promise1;
script end;
async1 end;
promise2;
setTimeout
(说明一点: 只能保证在 chrome 浏览器中打印顺序如此, 烟雨仔尝试了诸如 QQ浏览器, 打印顺序有些微差异.)
async function async1() {
console.log("async1 start")
await async2()
console.log("async1 end")
}
async function async2() {
console.log("async2")
}
console.log("start")
setTimeout(() => {
console.log("setTimeout")
})
async1