Closed azl397985856 closed 5 years ago
script start async1 start async2 promise1 script end async1 end promise2 setTimeout
宏任务:I/O , setTimeout, setInterval, 当前script ...这些是常用的 微任务:Promise.then catch finally,async
首先我们明白,一旦执行栈中的所有同步任务执行完毕(此时JS引擎空闲),系统就会读取任务队列,将可运行的异步任务添加到可执行栈中,那么回到题目中来,一开始运行js代码的时候就是一个宏任务,然后一行一行往下面执行,遇到其他异步的宏任务放到宏任务队列里面,然后等当前宏任务完全结束才运行,注意是完全结束,然后遇到微任务会把任务放到微任务队列里面,当同步代码运行完马上运行微任务队列里面的任务.接着开始下一个宏任务,如此循环下去.这是eventLoop. 下图是我的详细解释。 注意缩进和序号。