js中宏任务是相对于微任务而言的,也就可以粗略地认为普通的task都是宏任务,微任务必须是一个异步的任务,且这个执行时间在建立微任务的执行函数之后,而又要在当前宏任务执行完成之前。调用顺序: 全局上下文进入调用栈(执行宏任务) => 触发setTimeout(例)设置宏任务,该任务进入宏任务消息队列,继续执行主逻辑 => 触发promise.resolve().then(例)设置微任务,该任务进入微任务消息队列 => 主逻辑代码执行即将结束(宏任务即将结束) => 主线程进入微任务消息队列进行消费 => 消费过程若有新的微任务添加到队列 => 继续执行微任务直至清空队列 => 主线程进入宏任务队列进行消费 => 开始下一轮循环
后续考虑出个图,应该看起来会更直观一点。
后续考虑出个图,应该看起来会更直观一点。
展开
7
点赞