突然在帖子里看到宏任务和微任务,以前没见过. 就探寻了一下. 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 & Microtask (Promise)

其他

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

相关文章:

  • 2021-06-27
  • 2021-09-17
  • 2021-05-02
  • 2021-05-16
  • 2021-08-07
  • 2021-12-28
  • 2021-05-31
  • 2021-08-06
猜你喜欢
  • 2021-07-19
  • 2022-02-05
  • 2021-11-25
  • 2021-06-23
  • 2021-05-15
  • 2021-08-02
  • 2022-02-23
相关资源
相似解决方案