宏任务和微任务

  • 宏任务是指消息队列中等待被主线程执行的事件。
  • 微任务是一个需要异步执行的函数。
    • 执行微任务时不会在当前函数中执行,所以不会导致栈溢出
    • 微任务总是先于宏任务被执行

234773366-d074b0bf-912b-4052-85c8-70e248da6698
执行流程 foo→bar→global→micro-foo→micro-bar→micro-global→macro-foo→macro-bar→macro-global

能否在微任务中循环地触发新的微任务?

持续调用用微任务,宏任务就无法退出,比如鼠标,键盘等事件就无法被执行,页面无法响应,卡死。

function foo() {
  return Promise.resolve().then(foo)
}
foo()

posted @ 2025-11-17 18:17  jinzhepro  阅读(8)  评论(0)    收藏  举报