前端中的事件循环(Event Loop)
【摘要】 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. 执行顺序
基本执行流程:
- 执行同步代码。
- 执行当前任务产生的所有微任务。
- 浏览器有机会进行页面渲染。
- 执行下一个宏任务。
- 重复以上过程。
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)