微任务和宏任务

在JavaScript中,任务分为两种类型:微任务和宏任务。

微任务是在当前任务执行完成后立即执行的任务,例如Promise回调、MutationObserver回调等。微任务的执行优先级高于宏任务。

宏任务是在当前任务执行完成后,等待一定时间后再执行的任务,例如setTimeout回调、setInterval回调、事件回调等。

在任务队列中,微任务排在宏任务之前执行。

例如以下代码:

复制代码
console.log("start");

setTimeout(() => {
  console.log("setTimeout");
}, 0);

Promise.resolve().then(() => {
  console.log("promise");
});

console.log("end");

输出的结果为:

复制代码
start
end
promise
setTimeout

原因是先执行同步代码输出start和end,然后遇到微任务,执行Promise回调输出promise,最后执行宏任务输出setTimeout。

相关推荐
神仙别闹3 分钟前
基于 C# OpenPGP 的文件管理系统
开发语言·c#
番石榴AI19 分钟前
纯 CPU 推理!0.1B 超轻量级端到端OCR模型,使用 Java 进行文档解析
java·开发语言·ocr
likerhood22 分钟前
ConcurrentHashMap详细讲解(java)
java·开发语言·性能优化
费曼学习法24 分钟前
React 18 并发模式(Concurrent Mode):Fiber 架构的终极进化
javascript·react.js
容智信息28 分钟前
AI Agent(智能体)的输出格式应该从 Markdown 转向 HTML吗?
前端·人工智能·rust·编辑器·html·prompt
_风满楼29 分钟前
TDD 进阶:换个角度看会议室预约
前端·javascript·github
Amy_yang29 分钟前
uni-app 安卓端纯前端预览 DOCX 的实现思路
前端·vue.js
x_y_31 分钟前
分享一个自己总结的前端开发skill~ requirement-to-delivery
前端·ai编程
梨子同志32 分钟前
CSS Grid
前端·css
子兮曰33 分钟前
SuperSplat 深度解析:7.6K Stars 的浏览器端 3D 高斯泼溅编辑器 — 在 Web 上编辑现实
前端·javascript·webgl