- 宏任务是指消息队列中等待被主线程执行的事件。
- 微任务是一个需要异步执行的函数。
- 执行微任务时不会在当前函数中执行,所以不会导致栈溢出
- 微任务总是先于宏任务被执行
执行流程foo→bar→global→micro-foo→micro-bar→micro-global→macro-foo→macro-bar→macro-global
能否在微任务中循环地触发新的微任务?
持续调用用微任务,宏任务就无法退出,比如鼠标,键盘等事件就无法被执行,页面无法响应,卡死。
function foo() {
return Promise.resolve().then(foo)
}
foo()
❤️ 转载文章请注明出处,谢谢!❤️