题目的本质的考察setTimeout、promise、async await的实现及执行顺序。
一、event loop
js主线程不断的循环往复的从任务队列中读取任务,执行任务,这种运行机制称为事件循环.
二、Microtasks、Macrotasks
Microtasksd的优先级要高于Macrotasks。
1.每一个event loop都有一个microtask queue
2.每一个event loop 会有一个或者多个macrotask queue
3.一个任务task可以放入macrotask queue也可以放入,microtask queue中
4.每一次event loop ,会首先执行Microtask queue,执行完成后,会提取macrotask queue的一个任务加入microtask queue接着继续执行microtask queue,依次执行下去直至所有任务执行结束。