微任务和宏任务

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

相关推荐
前端Hardy几秒前
谁还没⽤过shadcn/ui?114k+星标,不装NPM包,前端组件自由终于实现了
前端·javascript·vue.js
morestrive8 分钟前
基于 fabric.js 实现浏览器端矢量 PDF 导出
前端·github
TAN-90°-16 分钟前
Java 3——getter和setter super()关键字
java·开发语言
wand codemonkey17 分钟前
(二十七)Maven(依赖)【安装】+【项目结构】
java·开发语言·maven
linda公馆19 分钟前
Maven项目报错:java:错误:不支持发行版本 5
java·开发语言·maven
Ulyanov27 分钟前
《从质点到位姿:基于Python与PyVista的导弹制导控制全栈仿真》: 可视化革命——基于 PyVista 的 3D 战场构建与实时渲染
开发语言·python·算法·3d·系统仿真
Heaphaestus,RC32 分钟前
Slate到UMG的封装原理揭秘
开发语言·ue5
爱喝热水的呀哈喽39 分钟前
一段即插即用的hypermesh命令行
开发语言·python
Bolt43 分钟前
用 pnpm 11 省掉项目里的 .nvmrc 与 .npmrc
前端·npm·node.js
猪猪聪明_V44 分钟前
前端码农的本地项目启动器
前端·javascript