Yogae 健身狂魔

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)将被放到下一轮宏任务中来执行。