JavaScript 的工作原理:Web API、回调队列和事件循环

2025-06-04

JavaScript 的工作原理:Web API、回调队列和事件循环

大家好👋,希望你们一切都好。

因此,在上一篇文章中,我们了解了Google 的 V8 引擎堆内存调用堆栈

在本文中,我们将了解Web API回调队列事件循环

🌐 Web API

Web API 由 Web 浏览器提供,为 V8 引擎提供附加功能。

Web API 调用从调用堆栈添加到 Web API 容器。这些 Web API 调用将保留在 Web API 容器内,直到触发操作。该操作可以是点击事件HTTP 请求,也可以是计时器完成其设定的时间。触发操作后,回调函数将被添加到回调队列中。

🧑‍🤝‍🧑 回调队列

回调队列是一种FIFO数据结构。

回调队列按照添加的顺序存储所有回调函数。

♻️ 事件循环

当您的函数调用在调用堆栈中需要花费大量时间执行时会发生什么?

例如

  • 执行从 1 到 10B 的 for 循环
  • 发出网络请求
  • 进行图像处理

让我们举个例子。

console.log("start");
// 1 sec delay
function delay() {
for(var i = 0; i < 1000; i++);
console.log("1 sec delay")
}
delay();
console.log("end");
view raw blocking.js hosted with ❤ by GitHub

同步代码可视化
阻塞

你可能会问这为什么是个问题?问题在于,当调用栈有一个函数要执行时,浏览器因为被阻塞而无法执行任何其他操作。

解决方案是异步回调、承诺和异步/等待。

让我们举个例子。

异步代码可视化
阻塞

事件循环只有一个简单的工作要做。它查看调用栈和回调队列,如果调用栈为空,就将回调队列的第一个回调函数推送到调用栈

我希望现在你已经很好地理解了 JavaScript 的工作原理。

在下一篇文章中,我们将学习 V8 如何编译我们的 JavaScript 代码。

📚 资源

事件循环到底是什么?| Philip Roberts | JSConf EU

感谢阅读!我叫 Bipin Rajbhar;我喜欢帮助人们学习新技能😊。如果您想收到新文章和资源的通知,可以在Twitter上关注我。

文章来源:https://dev.to/bipinrajbhar/how-javascript-works-web-apis-callback-queue-and-event-loop-2p3e
PREV
📊 DEV 上的语言流行度
NEXT
使用 HTML 和 CSS 创建浮动标签 📚 进一步阅读: