其他分享
首页 > 其他分享> > 事件循环

事件循环

作者:互联网

本文记录对事件循环的理解

setTimeout与setInterval

不同点:

1
2
3
4
5
6
7
setTimeout(function() {
setTimeout(repeatMe, 10);
}, 10);

setInterval(function() {

}, 10)

setTimeout要在前一个callback回调执行结束并延迟10ms以后,才能再次执行setTimeout(),
而setInterval()则是每隔10ms就尝试执行callback回调,而不关注上一个callback是何时执行的。

任务队列macrotask与microtask

事件循环中的任务队列主要包括macrotask与microtask,执行的顺序为:

  1. 在 macrotask 队列中执行最早的那个 task ,然后移出
  2. 执行 microtask 队列中所有可用的任务,然后移出
  3. 下一个循环,执行下一个 macrotask 中的任务 (再跳到第2步)

macrotask主要有setInterval与setTimeout,miscrotask主要有Promise.then()的回调。mascrotask产生的microtask可以在本次循环执行,而macrotask则需要下次循环执行。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
大专栏

标签:macrotask,setTimeout,setInterval,队列,循环,处理程序,事件,执行
来源: https://www.cnblogs.com/lijianming180/p/12261121.html