現在、ブラウザのイベントについて少し混乱しています。イベントループがどのように機能し始めるかはまだわかりません。たとえば、関数の途中でカスタム イベントをディスパッチすると、イベント処理はすぐに開始されますか?それともイベント キューに移動されますか? そして、他のイベントはどうですか?クリックするか、ページが読み込まれるとどうなりますか? イベント処理プロセスはいつ開始されますか?
1 に答える
イベントループがどのように機能し始めるかはまだわかりません。
通常、ブラウザーでは、ページに入るとすぐに機能し始め、ページを終了すると機能しなくなります。
たとえば、関数の途中でカスタム イベントをディスパッチすると、イベント処理はすぐに開始されますか?それともイベント キューに移動されますか?
同期イベント (すぐに発生する) と、次の反復で発生する非同期イベントがあります。コードは通常、明示的に終了しない限り、他の処理が実行される前に最後まで実行されます。
通常、DOM カスタム イベントは同期的です。つまり、それらを引き起こしているのはあなたであり、それはすぐに起こります.
たとえば、コードを実行していて、"click"
イベントが発生したり、設定されたタイマーsetTimeout
が起動したりした場合、コードは最初に実行を終了します。コードを「中断」するものは何もありません。
イベント処理プロセスはいつ開始されますか?
指定されたとおり:
イベントは、同期または非同期のいずれかでディスパッチできます。
同期のイベント (同期イベント) は、先入れ先出しモデルの仮想キューにあるかのように扱われ、他のイベント、DOM の変更、およびユーザーの相互作用。この仮想キュー内の各イベントは、前のイベントが伝播動作を完了するかキャンセルされるまで遅延する必要があります。一部の同期イベントは、マウス ボタン イベントなど、特定のデバイスまたはプロセスによって駆動されます。これらのイベントは、その一連のイベントに対して定義されたイベント順序アルゴリズムによって管理され、ユーザー エージェントはこれらのイベントを定義された順序でディスパッチする必要があります。