视频字幕
JavaScript 事件循环是一种机制,用于处理异步操作、管理执行栈和任务队列。它包含几个核心组件:调用栈用于存放正在执行的函数,堆用于存储对象和变量,Web APIs 提供异步功能,任务队列存放回调函数,微任务队列存放优先级更高的异步任务。
事件循环的工作流程是这样的:首先检查调用栈是否为空,如果为空,事件循环会清空微任务队列中的所有任务,然后从任务队列中取出一个任务放入调用栈执行。这个过程不断重复,确保异步任务能够有序执行。微任务的优先级总是高于普通任务。
当 JavaScript 执行到异步操作时,比如 setTimeout 或 fetch,这些操作会被交给 Web API 处理,而主线程会继续执行后续代码,不会等待异步操作完成。当异步操作完成后,相关的回调函数会被放入回调队列中。事件循环会在适当的时机将这些回调函数取出并执行,从而实现了非阻塞的异步处理。
JavaScript 中的任务分为微任务和宏任务两种类型。微任务包括 Promise 的 then 回调和 async/await,宏任务包括 setTimeout、setInterval 和 DOM 事件。执行顺序是:首先执行所有同步代码,然后清空微任务队列中的所有任务,接着执行一个宏任务,再次清空微任务队列,如此循环。微任务的优先级始终高于宏任务。
事件循环是 JavaScript 异步编程的核心机制,它的重要性体现在多个方面。首先,它实现了非阻塞的 I/O 操作,使得程序在等待网络请求或文件读取时不会卡住。其次,它保持了用户界面的响应性,用户可以在后台处理数据的同时继续与页面交互。事件循环支持现代的异步编程模式,提高了应用程序的整体性能,广泛应用于网络请求处理、用户交互响应、定时器和动画等场景。