前端中的事件循环(Event Loop)

举报
yd_284498617 发表于 2026/11/09 15:14:18 2026/11/09
【摘要】 1. 什么是事件循环?JavaScript 是单线程语言,同一时间只能执行一个任务。为了处理异步操作,JavaScript 使用事件循环机制,协调同步任务、微任务和宏任务的执行顺序。 2. 任务类型常见任务分为两类:宏任务(Macrotask):setTimeout、setInterval、I/O、UI 事件等。微任务(Microtask):Promise.then、queueMicrot...

1. 什么是事件循环?

JavaScript 是单线程语言,同一时间只能执行一个任务。

为了处理异步操作,JavaScript 使用事件循环机制,协调同步任务、微任务和宏任务的执行顺序。

2. 任务类型

常见任务分为两类:

  • 宏任务(Macrotask):setTimeout、setInterval、I/O、UI 事件等。
  • 微任务(Microtask):Promise.then、queueMicrotask、MutationObserver 等。

3. 执行顺序

基本执行流程:

  1. 执行同步代码。
  2. 执行当前任务产生的所有微任务。
  3. 浏览器有机会进行页面渲染。
  4. 执行下一个宏任务。
  5. 重复以上过程。

4. 经典示例

console.log('1');

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

Promise.resolve().then(() => {
  console.log('3');
});

console.log('4');

输出结果:

1
4
3
2

原因:

  • 1 和 4 是同步代码,优先执行。
  • 3 属于微任务,优先于下一个宏任务执行。
  • 2 属于宏任务,最后执行。

5. 实际应用

理解事件循环有助于解决很多前端问题:

  • 异步请求的执行顺序。
  • Promise 链式调用。
  • 定时器执行时机。
  • 页面渲染与性能优化。
  • 避免长时间同步任务阻塞页面。

总结

事件循环是 JavaScript 异步编程的核心机制。

掌握同步任务、微任务和宏任务的执行顺序,可以帮助我们更准确地理解 JavaScript 的运行行为。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。