2016-08-23 6 views
1

これはJavaScript内部についての質問です。JavaScript内部:どの間隔でイベントループが実行されますか?

私は、実行するのにx秒かかるすべての非同期タスクがあると言います。応答を待つ間、スクリプトはアイドルです。

バックグラウンドで、JavaScriptエンジンは「タスクキューに何かがありますか」と尋ねています。私の理解では、これはループです。したがって、イベントループ。私はNodeでこれがLibuvで実装されていることを知っています。私はちょっと説明したこの記事を読んでいます:https://nikhilm.github.io/uvbook/basics.html

JavaScriptエンジンは、アプリケーションのパフォーマンスをバランスさせるためにこのイベントループが実行される頻度に制限を設けていますか?それは設定された間隔で実行されますか?

私が何か問題がある場合は、修正してください。私は、このイベントループがどの間隔で実行されるかに全く関心がありませんでした。

+2

で始まるセクションでは、それはあなたが自分自身で関数からゼロでのsetTimeout場合、それはV8で約250回秒を発射する。 –

+0

で速いことができるように動作します他の中断要因(例:ajax)は、通常、「ping」されませんが、サブミスの粒度で低レベルのフロー制御を使用します。 – dandavis

+0

"アプリケーションのパフォーマンスをバランスさせるために*このイベントループがどれくらいの頻度で実行されるかの制限*" - 人為的にそれを減速しているかどうかを尋ねることを意味しますか?いいえ、彼らはなぜでしょうか? – Bergi

答えて

1

JavaScript側にループ自体はありません。しかし、libuvには1つあります。基本的に、libuvは、最も近いタイマーがヒットするか、または入出力操作が起こるまで待機します。次にCでコールバックを起動します.Cは、渡されたC++関数のNodeを呼び出し、次にこれが実行されるようにJavaScriptコードをトリガーします。

は、this presentationを見てください、特別にスライド33

関連する問題