2016-08-23 83 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