两分钟事件循环
什么是事件循环?
事件循环是 JavaScript 中的一种机制,它允许运行时处理异步操作。它通过在单线程环境中管理多个任务的执行,确保 JavaScript 保持响应迅速且非阻塞。
事件循环是如何工作的?
-
单线程执行: JavaScript 是单线程的
single-threaded,这意味着它一次只能执行一个任务。这是由线程管理的,函数以单线程的方式逐个Call Stack执行。synchronous -
调用栈:JavaScript 中执行同步代码的主线程。它跟踪当前正在执行的函数。
Think of Call Stack as a stack of plates.
Every time a function is called,
a new plate (function) is added to the stack.
When a function completes,
its plate (function) is removed from the stack.
-
Web API:对于异步操作,例如
setTimeout`get( )`、`get()`HTTP Requests、`fetchget()` 和 `get()DOM Events`,JavaScript 使用浏览器提供的 Web API。这些操作在调用栈之外处理。 -
回调队列:当异步操作完成时,回调函数会被添加到回调队列中。该队列会等待调用栈清空后,再将回调函数压入调用栈。
-
事件循环:事件循环持续检查调用栈和回调队列。如果调用栈为空,则将回调队列中的第一个函数移至调用栈执行。
-
微任务队列:对于 Promise 和 Mutation Observer,JavaScript 维护了一个单独的队列,称为微任务队列。微任务的优先级高于回调队列中的任务。事件循环会先检查微任务队列,然后再检查回调队列。
这就是事件循环的简要介绍!它是 JavaScript 运行时环境的关键组成部分,确保异步操作得到高效处理,并保持应用程序的响应速度。
面试官:欢迎加入团队!!😎🚀
文章来源:https://dev.to/bhataasim/event-loop-in-2-minutes-5895
