什么是宏任务与微任务以及它们的执行顺序

本文详细介绍了JavaScript中宏任务(如setTimeout和UI渲染)与微任务(如Promise回调和nextTick)的区别,以及它们在事件循环中的执行顺序和优先级。微任务优先级高于宏任务,确保了更快的执行速度。
摘要由CSDN通过智能技术生成

文章目录


微任务和宏任务是指在 JavaScript 中执行异步任务的两种不同的队列。

宏任务

宏任务: 宏任务是指由浏览器发起的、在事件循环中执行的异步任务。常见的宏任务包括:

  • setTimeout
  • setInterval
  • I/O 操作
  • UI 渲染
    宏任务的执行顺序是在每一轮事件循环结束时执行,在下一轮事件循环开始前执行。

微任务

微任务是指由 JavaScript 引擎发起、在当前宏任务执行结束后立即执行的异步任务。常见的微任务包括:

  • Promise 的回调函数
  • nextTick

微任务会在当前宏任务执行完毕后、下一个宏任务执行之前执行。
在事件循环中,每轮循环分为以下几个阶段:

  • 执行栈: 执行同步任务,将宏任务加入宏任务队列。
  • 消息队列检查: 将消息队列中的宏任务添加到执行栈,准备执行。
  • 微任务队列: 执行微任务队列中的所有任务。
  • 渲染: 更新页面渲染。
  • 宏任务执行: 执行宏任务队列中的一个任务,重复上述过程。

关于微任务和宏任务的执行顺序:

  • 每次执行栈为空时,会先执行微任务队列中的所有任务。
  • 微任务执行完毕后,会检查是否有渲染工作,执行渲染。
  • 渲染完成后,执行宏任务队列中的一个任务,然后重复上述步骤。

总体来说,微任务的优先级高于宏任务,微任务会在宏任务之前执行。这意味着微任务中的任务会优先于下一个宏任务执行,保证了相对较快的执行速度。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值