微任务和宏任务

在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。

相关推荐
gis开发之家4 分钟前
《Vue3 从入门到大神29篇》单元测试与 E2E 测试 —— 保障 Vue3 项目的质量
前端·javascript·vue.js·单元测试·前端框架·vue3
爱勇宝12 分钟前
AI 时代,更稀缺的是「提出好问题」还是「判断好答案」?
前端·人工智能·后端
李伟_Li慢慢13 分钟前
three.js 中的WebGPU 有几成熟了?
前端·three.js
逝水无殇14 分钟前
C# 正则表达式详解
开发语言·后端·正则表达式·c#
阿酷tony15 分钟前
纯HTML5播放器带倍速、带画质切换的播放器
前端·html·html5
ShiXZ21321 分钟前
指令集-NPM 常用指令速查手册
前端·npm·node.js
朱永博26 分钟前
使用Onnruntime实现Padim/Patchcore推理
开发语言·c#
এ慕ོ冬℘゜27 分钟前
前端核心知识体系进阶:从安全机制、网络协议到原生 JS 实战全解析
前端·网络协议·安全
前端H28 分钟前
Biome & Rolldown:Rust 工具链接管前端基建
开发语言·前端·rust
柒和远方30 分钟前
从等待到流式:LLM 流式输出的原理、协议与工程实践
javascript·llm