layout: 事件循环 event loop
title: loop
date: 2021-05-16 23:21:13
tags:
事件循环 event loop
宏任务:script , setTimeout, setInterval等
微任务: Promise, MutationObserver, queueMicrotask
MutationObserver接口提供了监视对DOM树所做更改的能力
过程:
1.一开始脚本作为宏任务运行,执行过程以同步代码为主线程
2.宏任务放到宏任务队列中,微任务放到微任务队列中
3.当前宏任务执行完出列,检查微任务列表,如果存在微任务,那么依次执行直到全部执行完。
4.再取一个宏任务,执行, 检查,清空微任务
5.依次循环
注意⚠️:在所有任务开始的时候,由于宏任务中包括了script
,所以浏览器会先执行一个宏任务,在这个过程中你看到的延迟任务(例如setTimeout
)将被放到下一轮宏任务中来执行。