微任务和宏任务

在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 分钟前
Vue3 零基础每日笔记(037):动手封装 useMouse 与 useWindowSize——事件监听的标准模板
前端·javascript·vue.js·笔记·html5
shmily麻瓜小菜鸡26 分钟前
TDD(测试驱动开发)详解
开发语言·javascript·typescript·node.js·ecmascript
三克的油40 分钟前
java-学习1
java·开发语言·学习
aixingpan41 分钟前
aixingpan.cn API开发文档:api_docs_bichart_natalvssolar_return2接口指南
前端·php
星期八不上发条1 小时前
智能指针是什么?使用场景,循环引用解决办法,面试回答
开发语言·c++·stl
OKkankan1 小时前
Python 基础进阶(三):从函数、类到 asyncio 与 FastAPI 后端开发实战
开发语言·python
八荒启·交互动画1 小时前
Web特效019-Web特效的定义与边界核心算法手写一遍:先跑起来,再谈高级效果
前端·webgl·网页特效·八荒启-交互动画·八荒启
晨枫阳2 小时前
Keycloak 授权体系详解:资源、策略、权限
前端
泡海椒2 小时前
jquick-pdf 防止 PDF 内容分页断裂:keepTogether 属性妙用
java·开发语言·pdf
wcy03102 小时前
POST为什么会发送两次请求
javascript·ajax