微任务和宏任务

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

相关推荐
c++之路4 分钟前
C++ 预处理器
开发语言·c++
ConardLi6 分钟前
开源我的 GPT-Image2 生图 Skill,附大量玩法指南
前端·人工智能·后端
我是Superman丶11 分钟前
Antigravity Retry 自动重试脚本
前端·javascript·vue.js
CN-Dust18 分钟前
【C++专题】格式化输出与输入
开发语言·c++·算法
是大强20 分钟前
nvm安装node成功npm失败
前端·npm·node.js
AI人工智能+电脑小能手21 分钟前
【大白话说Java面试题】【Java基础篇】第19题:HashMap的key如何减少发生哈希冲突
java·开发语言·后端·面试·哈希算法·hash-index·hash
im_AMBER28 分钟前
Leetcode 162 除了自身以外数组的乘积 | 接雨水
开发语言·javascript·数据结构·算法·leetcode
是个西兰花36 分钟前
C++:异常
开发语言·c++·异常
\xin39 分钟前
pikachu自编CSRF(GET),CSRF(POST),CSRF(token)
前端·csrf
AI人工智能+电脑小能手40 分钟前
【大白话说Java面试题】【Java基础篇】第18题:HashMap底层是如何扩容的
java·开发语言·面试·散列表·hash-index·hash