事件循环是JavaScript实现异步的底层机制,通过分同步代码、微任务、宏任务三阶段调度,确保单线程不阻塞;执行顺序为同步→全部微任务→一个宏任务→渲染→重复。

事件循环是 JavaScript 实现异步行为的底层调度机制,它让单线程的 JS 能“看起来”同时处理多个任务,而不会卡住页面或阻塞用户操作。
JavaScript 是单线程语言,主线程既要跑代码,又要渲染页面、响应点击——所有这些都挤在同一个线程里。如果没有事件循环,遇到一个 2 秒的网络请求,整个页面就会冻结 2 秒,按钮点不了、滚动卡死、动画停摆。
事件循环解决了这个问题:它把耗时操作(比如定时器、请求、用户点击)交给浏览器或 Node.js 的其他模块去后台处理,JS 主线程只管执行当前代码,等空下来再统一查收“谁干完了”,然后按规则执行回调。
整个过程可以简化为四步循环:
立即学习“Java免费学习笔记(深入)”;
这是最容易出错的地方。看这个典型例子:
console.log('1');输出是:1 → 4 → 3 → 2。原因不是“谁设的延时短谁先执行”,而是:
– '1' 和 '4' 是同步代码,立刻执行;
– setTimeout 回调进宏任务队列;
– Promise.then 进微任务队列;
– 同步执行完,事件循环马上执行所有微任务(只有 '3'),再取下一个宏任务('2')。
在微任务全部执行完、下一个宏任务开始前,浏览器会检查是否需要更新 UI(比如样式变化、动画帧)。这意味着:如果你在 Promise.then 里改了 DOM,用户能立刻看到;但如果在 setTimeout 里改,就要等下一轮事件循环,可能多延迟几毫秒甚至一帧(16ms)。
基本上就这些。不复杂,但容易忽略微任务的“插队权”和渲染时机的影响。
以上就是什么是事件循环_javascript的异步机制如何运作?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号