js中的宏任务与微任务

文章详细阐述了JavaScript中的宏任务和微任务的异步执行顺序。在每个事件循环中,先执行同步任务,接着处理微任务,直至所有微任务执行完毕,然后执行一个宏任务。宏任务包括Ajax请求、setTimeout等,微任务包括Promise回调和process.nextTick。文章通过示例解析了任务的执行流程,强调了事件循环中微任务优先于宏任务执行的原则。
摘要由CSDN通过智能技术生成

一、宏任务与微任务

宏任务与微任务都属于JavaScript 中的异步任务

1、宏任务:

  • 异步 Ajax 请求、
  • setTimeout、setInterval、
  • 文件操作
  • 其它宏任务

2、 微任务:

  • Promise.then、.catch 和 .finally
  • process.nextTick
  • 其它微任务

在这里插入图片描述

二、宏任务和微任务的执行顺序在这里插入图片描述

  • 在异步队列中会先找到微任务执行完所有微任务后,执行下一个宏任务
  • 每一个宏任务执行完之后,都会检查是否存在待执行的微任务
  • 如果有,则执行完所有微任务之后,再继续执行下一个宏任务

三、例子

在这里插入图片描述
分析上述图片执行顺序
首先,我们先找到所有的同步任务

  • 执行第6行、12行 输出 2、4
    然后寻找异步任务,判断是否有微任务,如果有,则执行所有同级的微任务
  • 执行第9行,输出3
    执行完所有微任务后判断是否有宏任务,若有宏任务则执行一个宏任务
  • 执行第二行代码
    不理解的可以看看第二张图

在这里插入图片描述
以上代码较长分为三图
执行顺序
分别是1、5、6、2、3、4、7、8、9

四、总结

在js中既先执行完所有同步任务,再执行异步任务,而异步任务有异步队列中会先找到微任务,执行完所有微任务后,执行下一个宏任务,每一个宏任务执行完之后,都会检查是否存在待执行的微任务,如果有,则执行完所有微任务之后,再继续执行下一个宏任务。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值