JavaScript中宏任务和微任务有哪些

发布时间:2021-11-23 15:09:01 作者:小新
来源:亿速云 阅读:434
# JavaScript中宏任务和微任务有哪些

## 前言

在JavaScript的异步编程模型中,理解**宏任务(MacroTask)**和**微任务(MicroTask)**的执行机制至关重要。本文将深入探讨它们的分类、执行顺序以及实际应用场景,帮助开发者掌握事件循环的核心原理。

---

## 一、什么是宏任务和微任务?

### 1. 基本概念
- **宏任务**:由浏览器或Node.js环境调度的任务,例如`setTimeout`、`setInterval`等。
- **微任务**:在当前任务执行结束后立即执行的任务,例如`Promise.then()`、`MutationObserver`。

### 2. 事件循环中的执行顺序
JavaScript引擎遵循以下流程:
1. 执行一个宏任务(如脚本整体)
2. 执行所有微任务
3. 渲染页面(如有需要)
4. 开始下一个宏任务

---

## 二、宏任务的主要类型

### 1. 定时器类
- **`setTimeout` / `setInterval`**  
  延迟执行或周期性执行的代码,属于典型的宏任务。
  ```javascript
  setTimeout(() => console.log('Timeout 1'), 0);

2. I/O操作

3. UI渲染

4. 其他


三、微任务的主要类型

1. Promise相关

2. MutationObserver

3. 其他API


四、执行顺序的经典案例

示例代码分析

console.log('Script start');

setTimeout(() => console.log('setTimeout'), 0);

Promise.resolve()
  .then(() => console.log('Promise 1'))
  .then(() => console.log('Promise 2'));

console.log('Script end');

输出结果

  1. Script start
  2. Script end
  3. Promise 1
  4. Promise 2
  5. setTimeout

执行流程解析

  1. 同步代码(宏任务)首先执行。
  2. 微任务队列中的Promise.then()按顺序执行。
  3. 最后执行宏任务队列中的setTimeout

五、常见面试题剖析

问题1:以下代码的输出顺序是什么?

setTimeout(() => console.log(1), 0);

Promise.resolve()
  .then(() => console.log(2))
  .then(() => console.log(3));

console.log(4);

答案:4 → 2 → 3 → 1

问题2:如何让代码在DOM更新后执行?

button.addEventListener('click', () => {
  Promise.resolve().then(() => console.log('Microtask'));
  setTimeout(() => console.log('Macrotask'));
});

点击后输出顺序为:MicrotaskMacrotask


六、实际应用场景

1. 性能优化

2. 框架中的运用

3. 避免UI卡顿


七、Node.js中的差异

1. process.nextTick vs setImmediate

2. 阶段对比

Node.js事件循环分为6个阶段,宏任务分布在不同的阶段(如pollcheck)。


总结

类型 常见API 执行时机
宏任务 setTimeout, setInterval, I/O 下一次事件循环
微任务 Promise.then, queueMicrotask 当前任务结束后立即执行

理解两者的区别和协作机制,能够帮助开发者编写更高效、可预测的异步代码。


扩展阅读

”`

注:实际字数可能因格式略有差异,建议通过Markdown工具查看完整统计。

推荐阅读:
  1. JS中宏任务与微任务的原理解析
  2. 深入浅析JS中事件循环和宏任务微任务的原理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

javascript

上一篇:C++的数据类型有哪些

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》