浏览器的event loop

在浏览器的事件中,包含宏任务和微任务。宏任务有:setImmediate,setTimeOut,setInterval,I/O,requestAnimationFrame,UI rendering,微任务有:promise,process.nextTick,Object.observe,MutationObserver

  1. 执行全局script同步代码,这些代码有的是同步任务,有的是异步任务
  2. 执行完所有同步代码后,调用栈就清空了
  3. 从微任务队列中取出位于队首的任务进行执行,微任务队列长度减一
  4. 继续取出微任务队列队首任务并放到stack调用栈中执行,直到微任务队列被清空,这过程中如果由产生了微任务,则会被放到队列最尾端,在此过程中一起被清空
  5. 当微任务队列为空,则去宏任务队列取出队首任务放到调用栈执行
  6. 执行完毕后,再次检查微任务队列并执行,如此循环往复。。
posted @ 2020-04-19 17:34  ashen1999  阅读(129)  评论(0编辑  收藏  举报