Macrotask & Microtask (Promise)

突然在帖子里看到宏任务和微任务,以前没见过. 就探寻了一下. Microtask起源于ES6的Promise, 不是jQuery的Promise . 因为经常会用到Promise,所以有必要了解执行时序(毕竟不是多线程,时序纯粹是Javascript引擎的消息循环中按照规范定义的).

Microtask 就是 PromiseJob

所谓微任务就是Promise的各种回调函数, 有人说Dom的修改也属此类,但是和我们写代码可能没关系,也没看到资料.

ES6引入Promise对象解决异步问题,同时也引入了一类新的PendingJobs (PromiseJobs), 注册到一个内部队列去(internal queue), 然后在脚本执行的间隙(传统的消息循环的Idle时段)一次性执行到清空这个内部队列(这里的小例子简明的说明了时序的规定). 而目前我们所知道的可能经由我们的代码产生的Microtask, 几乎都来自Promise(还有一个queueMicrotask函数, 直接操作队列,这个算特殊用法.).

摘录最主要的一段文字如下.
参考链接: ecma262/#sec-jobs-and-job-queues

在这里插入图片描述

其他

其他就是Macrotask就是当前执行的脚本, 同步运行的代码这部分(包括setTimeOut注册的回调和各种UI事件响应), 为了说明Microtask吧.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值