JavaScript内部:事件循环每隔多长时间运行一次?

JavaScript Internals: At what interval does the event loop run?

本文关键字:运行 一次 长时间 内部 事件 循环 JavaScript      更新时间:2023-09-26

这是一个关于JavaScript内部的问题。

假设我有10个异步任务,它们都需要x秒才能运行。在等待响应时,脚本处于空闲状态。

在后台,JavaScript引擎正在询问"任务队列上是否有任何内容"。在我看来,这是一个循环。因此,事件循环。我知道在Node中这是用Libuv实现的。我读了这篇文章,其中解释了一点:https://nikhilm.github.io/uvbook/basics.html

为了平衡应用程序的性能,JavaScript引擎是否对事件循环运行的频率进行了限制?它是否以固定的间隔运行?

如果我说错了什么,请纠正我。我只对事件循环的运行间隔感兴趣。

JavaScript端本身没有循环。不过在libuv有一个。基本上,libuv将等待,直到最近的计时器到达或i/o操作发生。然后它将在C中触发一个回调,调用Node传递的c++函数,然后触发JavaScript代码执行。

看一下这个演示,特别是从第33页开始的部分