宏任务和微任务

本文详细解释了JavaScript中的宏任务(如Ajax、setTimeout等)和微任务(.then()、process.nextTick)的区别,以及它们的执行顺序,包括宏任务与微任务的调度规则和示例。
摘要由CSDN通过智能技术生成

1.JavaScript 把异步任务做了进一步的划分,分别是:

宏任务(macrotask):

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

微任务(microtask):

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

 2. 宏任务和微任务的执行顺序

执行过程:

1、执行第一个宏任务script ,执行同步代码。

2、再执行所有微任务队列。

3、再执行宏任务。

4、一直循环。

执行过程中碰到宏任务就放到宏任务队列排队,碰到微任务就去微任务排队。

备注:

1、js开始运行就算宏任务!!!哪怕什么都没有操作也算宏任务,就是没有同步代码的情况,接下去也是清空微任务队列!!!宏任务结束,下一步一定是清空微任务队列!!!就是第二步。

2、两个定时器如果时间一样,按照列队先后顺序执行。

3、两个定时器,时间短的先执行,不管进入列队的先后顺序。

4、for循环属于同步任务。

5、dom渲染在宏任务之前。

6、new Promise(()=>{})属于同步任务。

7、await属于.then()的语法糖,后面所有的代码都要放到微任务队列等待执行。

8、事件轮询与DOM渲染顺序_dom渲染是宏任务还是微任务-CSDN博客

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值