执行顺序规则
事件循环流程:

执行一个宏任务(如整体script脚本),同步代码优先,所有同步代码立即执行
执行所有微任务(直到微任务队列为空)。
可能进行UI渲染(浏览器)。
进入下一轮事件循环,执行下一个宏任务。
关键特点:

事件循环每次只处理一个宏任务,再处理其产生的微任务队列。所以,微任务队列会在 每个宏任务执行后 立即执行
微任务队列(micro task queue)优先级高于宏任务队列。
微任务执行期间新添加的微任务会继续执行,直到队列清空。
浏览器环境script脚本执行顺序
执行Script整体同步宏任务代码,直到调用栈call stack清空;同时遇到异步任务源(setTimeOut,Promise等)执行,委托给宿主环境监听(setTimeOut延迟时间是否到达,Promise是否reolve),添加到对应的宏和微任务队列
执行所有微任务micro task队列任务,直到清空
渲染UI,
执行异步宏任务macro-task队列的一个任务
跳到步骤2,不停循环执行


奔放的炒粉
1 声望1 粉丝