EventLoop
2020-07-06 本文已影响0人
饥人谷_刘康
1.浏览器中的事件循环(Event Loop)
事件循环可以简单的描述为以下四个步骤
1. 函数入栈,当Stack中执行到异步任务的时候,就将他丢给WebAPIs,接着执行同步任务,直到Stack为空;
2. 此期间WebAPIs完成这个事件,把回调函数放入队列中等待执行(微任务放到微任务队列,宏任务放到宏任务队列)
3. 执行栈为空时,Event Loop把微任务队列执行清空;
4. 微任务队列清空后,进入宏任务队列,取队列的第一项任务放入Stack(栈)中执行,回到第1步。
浏览器中的任务源(task)
微任务:then 、messageChannel 、mutationObersve、promise.then,process.nextTick
宏任务:script、setTimeout、setInterval、setTmmediate(只兼容ie)、promise中的executor