寒假生活指导 15

JavaScript 是单线程语言,通过事件循环实现异步操作。掌握其运行机制能避免代码执行顺序的常见误区。
核心概念
调用栈:同步代码按顺序执行,形成栈结构
任务队列:异步回调按类型进入不同队列
宏任务:setTimeout、setInterval、DOM 事件
微任务:Promise.then、MutationObserver
执行规则:
同步代码执行完毕 → 清空所有微任务 → 执行一个宏任务 → 重复循环
代码示例
console.log("Start");

setTimeout(() => console.log("Timeout"), 0);

Promise.resolve()
.then(() => console.log("Promise"));

console.log("End");

/* 输出顺序:
Start → End → Promise → Timeout
*/

关键特性
微任务优先级:总在下一个宏任务前执行
渲染时机:浏览器通常在每个宏任务之间执行 UI 渲染
阻塞风险:长时间同步代码会阻塞事件循环

实际应用
性能优化:将耗时操作拆解为多个微任务
动画流畅:使用 requestAnimationFrame 替代 setTimeout
错误处理:确保 Promise 错误在微任务阶段捕获

浏览器 vs Node.js
浏览器:每轮事件循环处理一个宏任务及其关联微任务

Node.js:分阶段处理不同类型宏任务(如 setImmediate 优先于 setTimeout)

posted @ 2025-02-15 14:15  一如初见233  阅读(5)  评论(0)    收藏  举报