微任务和宏任务

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

相关推荐
心随雨下11 小时前
TypeScript泛型开发常见错误解析
java·开发语言·typescript
码上成长11 小时前
包管理提速:pnpm + Workspace + Changesets 搭建版本体系
前端·前端框架
Bigger12 小时前
Tauri(十九)——实现 macOS 划词监控的完整实践
前端·rust·app
郝学胜-神的一滴12 小时前
现代OpenGL窗口管理:GLFW从入门到实战
开发语言·c++·程序人生·图形渲染·个人开发
穷人小水滴12 小时前
使用 epub 在手机快乐阅读
javascript·deno·科幻
谁刺我心12 小时前
C++三种智能指针unique、shared、weak
开发语言·c++
ganshenml12 小时前
【Web】证书(SSL/TLS)与域名之间的关系:完整、通俗、可落地的讲解
前端·网络协议·ssl
AGANCUDA13 小时前
qt使用osg显示pcd点云的例子
开发语言·qt
2301_8156864513 小时前
extern
java·开发语言
q***563813 小时前
Java进阶-SPI机制
java·开发语言