微任务和宏任务

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

相关推荐
qingyun9899 分钟前
深度优先遍历:JavaScript递归查找树形数据结构中的节点标签
前端·javascript·数据结构
胡楚昊9 分钟前
NSSCTF动调题包通关
开发语言·javascript·算法
2401_8370885016 分钟前
简要总结 HashSet 和 HashMap(Java)
java·开发语言
熬夜敲代码的小N27 分钟前
Vue (Official)重磅更新!Vue Language Tools 3.2功能一览!
前端·javascript·vue.js
90后的晨仔31 分钟前
用 Python 脚本一键重命名序列帧图片的名称
前端
辰同学ovo31 分钟前
Vue 2 路由指南:从入门到实战优化
前端·vue.js
小彭努力中32 分钟前
1.在 Vue 3 中使用 Cesium 快速展示三维地球
前端·javascript·vue.js·#地图开发·#cesium·#vue3
毕设源码-钟学长35 分钟前
【开题答辩全过程】以 基于Java的家政服务管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
一棵开花的树,枝芽无限靠近你36 分钟前
【face-api.js】1️⃣基于Tensorflow.js的人脸识别项目开源项目
javascript·开源·tensorflow·face-api.js
小白学大数据38 分钟前
Java 爬虫对百科词条分类信息的抓取与处理
java·开发语言·爬虫