私は GWT を使用して Web アプリケーションのプログラミングを行ってきましたが、「ブラウザー イベント ループ」という用語に混乱しています。
延期されたコマンドを実行し、ブラウザ イベント ループが完了した後に「何かを行う」必要がある状況に遭遇しました。
それが正確に何であるか、イベントループプロセス中に何が起こり、どの順序で発生するかを知りたいのですが?
私は GWT を使用して Web アプリケーションのプログラミングを行ってきましたが、「ブラウザー イベント ループ」という用語に混乱しています。
延期されたコマンドを実行し、ブラウザ イベント ループが完了した後に「何かを行う」必要がある状況に遭遇しました。
それが正確に何であるか、イベントループプロセス中に何が起こり、どの順序で発生するかを知りたいのですが?
ブラウザー イベント ループは、その名前のとおり、さまざまなイベントを常にスキャンして実行しているブラウザーによって開始されるスレッドです。イベントが発生すると、それらはイベント キューに入れられ、1 つのイベント スレッドによって順番に実行されます。あなたのJavaScriptは、それが完了するのを待っている独自のループを作成しないでください...それはその1つの連続イベントループスレッドをブロックします. 代わりに、setTimeout や setInterval などを使用して、待機中の条件を確認し、ブラウザが「待機」している間に動作できるようにします。
GWT は、スケジューラを使用してこのプロセスをいくらか採用できるという点で優れています。イベント ループが「完了」した後に何かを実行したい場合は、おそらく scheduleFinally または scheduleDeferred を使用することをお勧めします。現在の実行コンテキスト (現在の実行コンテキスト == ウィンドウをルートとする現在の JavaScript オブジェクト階層のどこにいても) で他のすべてのコードの後に実行されるように、コードの一部のハンドラーをイベント キューに挿入します。オブジェクト) が実行されますが、キューに配置される次のイベントの前に実行されます。