千家信息网

JavaScript中macrotask和microtask的区别是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关JavaScript中macrotask和microtask的区别是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。先
千家信息网最后更新 2026年11月03日JavaScript中macrotask和microtask的区别是怎样的

这篇文章将为大家详细讲解有关JavaScript中macrotask和microtask的区别是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

先来看一段关于promise的常见面试题,写出数字的打印顺序:

setTimeout(function() {
console.log(4)
},
0);
new Promise(function(resolve) {
console.log(1)
for (var i = 0; i < 10000; i++) {
i == 9999 && resolve()
}
console.log(2)
}).then(function() {
console.log(5)
});
console.log(3);

在输出结果之前,我们先来了解两个概念 macrotasks 和 microtasks。直译过来就是大型任务和微型任务。在javascript中,这两个任务有什么不同呢?microtasks比macrotasks优先执行。

在V8引擎实现中,任务队列分为 macrotasks 和 microtasks。两个队列各包含不同的任务:

macrotasks: script(整体代码),setTimeout, setInterval, setImmediate, I/O, UI rendering

microtasks: process.nextTick, Promises, Object.observe, MutationObserver。

从列表中可以看出,上述代码中Promise中的then方法中的函数会被推入 microtasks 队列,而setTimeout的任务会被推入 macrotasks 队列。

上述代码在执行过程中遇到了setTimeout,将其回调加入到macrotask queue中, 然后,遇到了promise.then,放入到了另一个队列microtask queue。 等整个主线程执行完后, 就会从microtask queue中取出函数执行,直到microtask queue中的全部任务执行完成,才会执行macrotask queue中的函数。 因此promise.then的回调比setTimeout先执行。

在javascript中,microtask queue会优先于macrotask queue执行。microtask 就相当于头图中的VIP客户,可以随时插队,插入到第一个人和第二个人之间,第一个人相当于正在执行的主线程,而第二个人相当于macrotasks即将要执行的回调。

上面代码的运行结果为:1 2 3 5 4

关于JavaScript中macrotask和microtask的区别是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

任务 队列 代码 两个 函数 不同 内容 文章 更多 知识 篇文章 线程 结果 二个人 先来 不错 个人 之间 人和 客户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 广州百单互联网科技有限公司 科技互联网政务服务 互联网巨头科技公司 麻工互联网科技 卫星互联网科技股票 云创客互联网科技公司 现代科技和互联网有关系吗 互联网大会黑科技排名 上海宁丞科技互联网 重庆互联网医院沙龙医盟信息科技 华夏互联网科技业 洛阳共同富裕互联网科技有限公司 互联网科技和法律行业 互联网在线教育科技创业 广州富喜互联网络科技 富国互联网科技002692 郑州欣桑互联网科技有限公司 长沙渺峰互联网科技有限公司 上海旺乐尼互联网科技有限公司 有格互联网科技 上海亿帐通互联网科技 互联网科技类展会 玖二柒互联网科技公司待遇 创业天下互联网科技有限公司 每天都有哪些好的互联网科技 互联网科技融合创新 现代互联网科技公司 河南商务圈互联网科技有限公司 前海云享互联网科技
0