我们都知道JavaScript 是单线程,同一个时间只能做一件事。所有任务需要排队,当前队列的任务也分为两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous),在所有同步任务执行完之前,任何的异步任务是不会执行的。
事件=>同步=>异步
其中异步任务中又分为 宏任务(macrotasks)、微任务(microtasks),执行到异步任务时先执行宏任务,把宏任务放入Event Queue,然后在执行微任务,在将微任务放入Event Queue (这里要注意一点微任务和宏任务Event Queue是两个不同的空间) 等到回调的时候是先微任务然后在宏任务
执行:宏任务=>微任务 callback : 微任务=>宏任务
宏任务包括:整体代码 script,setTimeout,setInterval
微任务包括:Promise,process.nextTick
网友评论