微任务和宏任务

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

相关推荐
不秃头的帅哥5 小时前
程序地址空间(基于c++和linxu的一些个人笔记
linux·开发语言·c++·操作系统·内存空间
Dxxyyyy5 小时前
零基础学JAVA--Day41(IO文件流+IO流原理+InputStream+OutputStream)
java·开发语言·python
Dragon Wu5 小时前
ReactNative Expo 使用总结(基础)
javascript·react native·react.js
独自破碎E5 小时前
力场重叠问题
java·开发语言·算法
jiuweiC5 小时前
python 虚拟环境-windows
开发语言·windows·python
前端世界5 小时前
C 语言项目实践:用指针实现一个“班级成绩智能分析器”
c语言·开发语言
真上帝的左手5 小时前
24. 前端-js框架-Electron
前端·javascript·electron
非情剑5 小时前
Java-Executor线程池配置-案例2
android·java·开发语言
毛发浓密的女猴子5 小时前
Git Pull 策略完全指南:Merge、Rebase、Fast-forward 深度对比
前端
夏小花花5 小时前
<editor> 组件设置样式不生效问题
java·前端·vue.js·xss