2016-08-23 86 views
1

这是一个关于JavaScript内部的问题。JavaScript内部:事件循环在什么时间间隔运行?

可以说我有10个异步任务,都需要x秒的时间才能运行。在等待回应时,脚本闲置。

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

JavaScript引擎对此事件循环的运行频率有任何限制,以平衡应用程序的性能?它是否以设定的时间间隔运行?

如果我没有任何东西,请纠正我。我纯粹对这个事件循环运行的时间间隔感兴趣。

+2

它运行在快地 –

+0

如果零与自身形成一个功能的setTimeout,它触发第二个约250倍V8。其他中断源(例如,ajax)通常不会被“ping通”,但使用次级粒度的低级流量控制。 – dandavis

+0

“*限制此事件循环运行的频率以平衡应用程序的性能*” - 您是否打算询问它们是否会人为拖慢速度?不,他们为什么? – Bergi

回答

1

JavaScript方面本身没有循环。尽管libuv中有一个。基本上libuv会一直等到最近的定时器命中或I/O操作发生。然后它会在C中触发一个回调函数,该函数调用C++函数Node传递,然后触发JavaScript代码执行。

看一看this presentation,特别是部分开始滑动33