浏览器中的事件循环机制(Event Loop)

浏览器中的事件循环机制(Event Loop)

事件循环的运行机制是,先执行栈中的内容,栈中的内容执行后执行微任务,微任务清空后再执行宏任务,先取出一个宏任务,再去执行微任务,然后在取宏任务清微任务这样不停的循环

事件循环可以简单描述为以下四个步骤
  1. 函数入栈,当执行到异步任务的时候,就将他丢给WebAPIs,接着执行同步任务,直到栈清空。
  2. 此期间,WebAPIs 完成这个事件:把回调函数放入队列中等待执行(微任务放到微任务队列,宏任务放入宏任务队列
  3. 执行栈为空时,Event Loop 把微任务队列执行清空
  4. 微任务队列清空后,进入宏任务队列,取队列的第一项任务放入栈中执行,执行完成后,查看微任务队列是否有任务,有的话,清空微任务队列,重复第4步,继续从宏任务中取任务执行,执行完成之后,继续清空微任务,如此反复循环,直至清空所有任务。

浏览器中的任务源

宏任务

setTimeout、setInterval、DOM事件、AJAX请求

微任务

Promise、async/await、mutationObserver等