微任务和宏任务

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

相关推荐
DEMO派11 分钟前
前端常用XSS攻击演示与防御方案解析
前端·xss
前路不黑暗@25 分钟前
Java项目:Java脚手架项目的通用组件的封装(五)
java·开发语言·spring boot·学习·spring cloud·bootstrap·maven
sa1002728 分钟前
京东评论接口调用、签名生成与异常处理
开发语言·数据库·python
问今域中29 分钟前
Vue的computed用法解析
前端·javascript·vue.js
赵谨言31 分钟前
基于Python实现地理空间数据批处理技术探讨及实现--以“多规合一“总体规划数据空间叠加分析为例
大数据·开发语言·经验分享·python
扶苏10021 小时前
详解Vue3的provide和inject
前端·javascript·vue.js
独自破碎E1 小时前
BISHI40数组取精
java·开发语言
丑八怪大丑1 小时前
Java面向对象(进阶)
java·开发语言
武帝为此1 小时前
【Shell 函数库介绍】
前端·chrome
java1234_小锋1 小时前
Java高频面试题:Java中变量和常量有什么区别?
java·开发语言·面试