微任务和宏任务

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

相关推荐
Donald_brian14 小时前
线程同步
java·开发语言·jvm
全栈陈序员14 小时前
【Python】基础语法入门(十五)——标准库精选:提升效率的内置工具箱
开发语言·人工智能·python·学习
阿蒙Amon14 小时前
JavaScript学习笔记:4.循环与迭代
javascript·笔记·学习
爱上妖精的尾巴15 小时前
6-3 WPS JS宏 add、delete、size、clear集合成员添加与删除
javascript·wps·js宏·jsa
郑州光合科技余经理15 小时前
技术视角:海外版一站式同城生活服务平台源码解析
java·开发语言·uni-app·php·排序算法·objective-c·生活
郑州光合科技余经理15 小时前
海外版生活服务系统源码 | 外卖+跑腿一站式平台技术解析
java·开发语言·javascript·git·spring cloud·php·生活
小小Fred15 小时前
Cortex-M3 LR寄存器的特殊值EXC_RETURN
java·开发语言·jvm
小小心愿家15 小时前
线程——对于锁的进一步认识
java·开发语言
fruge15 小时前
Lodash 源码精读:防抖节流的实现细节与边界场景
前端
曹牧15 小时前
Java: FATAL ERROR: processing of -javaagent failed
java·开发语言