教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

微任务和宏任务的区别是什么?

更新时间:2023年05月29日10时21分 来源:传智教育 浏览次数:

好口碑IT培训

  微任务和宏任务是在异步编程中经常使用的概念,用于管理任务的执行顺序和优先级。

  微任务(Microtask)和宏任务(Macrotask)都是异步任务,但它们之间存在一些关键的区别:

  1.微任务:

  (1)微任务通常比宏任务具有更高的优先级。

  (2)微任务总是在当前任务执行完成后立即执行。

  (3)微任务通常是由JavaScript引擎本身创建和调度的,如Promise的回调函数、MutationObserver的回调等。

  2.宏任务:

  (1)宏任务通常具有较低的优先级。

  (2)宏任务会被推迟执行,直到JavaScript引擎处于空闲状态时才会执行。

  (3)宏任务可以由各种事件触发,例如鼠标事件、定时器事件(setTimeout、setInterval)等。

  下面是一个简单的JavaScript代码演示,展示了微任务和宏任务的执行顺序:

console.log('1');

setTimeout(function() {
  console.log('2');
}, 0);

Promise.resolve().then(function() {
  console.log('3');
});

console.log('4');

  输出结果为:

1
4
3
2

  在这个示例中,首先打印了数字1和4,这是因为它们是同步任务。然后,微任务Promise的回调函数被添加到微任务队列中。接下来,通过setTimeout函数创建的定时器被添加到宏任务队列中。当JavaScript引擎处于空闲状态时,它会先执行微任务队列中的任务,然后再执行宏任务队列中的任务。

  所以,数字3首先被打印,这是因为微任务具有更高的优先级,它会在当前任务完成后立即执行。然后,数字2被打印,这是因为宏任务需要等待一段时间,直到JavaScript引擎空闲时才会执行。

  需要注意的是,微任务和宏任务的执行顺序可能会因浏览器和JavaScript引擎的实现而有所不同。上述示例只是一种可能的执行顺序,不同的环境下可能会有差异。

0 分享到:
和我们在线交谈!