それは実際には、ハンドラーで何をするか、および最初のハンドラーが終了した瞬間をどのように定義するかによって異なります。
たとえば、eventHandler1 で同期操作のみを実行している場合、eventHandler1 が終了する前に eventHandler2 がトリガーされないことが確実です。その理由は、javascript がシングル スレッドであるためです。
しかし、次のようなシナリオを想像してください: button1 をクリックすると、実際に ajax リクエストを行う eventHandler1 がトリガーされます。そのシナリオでは、実際に「eventHandler1 の終わり」とは何だと思いますか? ajax リクエストが返された瞬間であれば、eventHandler1 が終了する前に eventHandler2 が確実に実行を開始 (および場合によっては終了) します。
簡単に言えば、同期のみの操作を行うときはいつでも、順序が保証されます。
コメントから追加:
http://www.w3.org/TR/DOM-Level-3-Events/#sync-asyncたとえば、「この仮想キュー内の各イベントは、前のイベントが伝播動作を完了するまで遅延する必要があります。またはキャンセルされました。」
さて、ここで「どのような種類のイベントについて話しているのか」という質問に戻りますか? 前に述べたように、非同期イベントの場合、順序が保証されていないことを確認してください。しかし、最初のジレンマはクリック イベントに関するもので、それは非同期ではなく同期でした。また、同期イベントのドキュメントには、次のように明確に記載されています。その他のイベント、DOM の変更、およびユーザー インタラクション。
はい、無保証です。シングルスレッド化されているjavascriptを追加すると、それらを同時に実行することはできません。しかし、はい、DOM について厳密に言えば、どちらが前に発生するかはまったく保証されません。
もう 1 つコメントします。まったく同じ DOM を使用している可能性がありますが、Java マルチスレッド環境からアクセスします。:) javascript のようにシングル スレッド環境で「保護」されていないため、独自のスレッド セーフな非同期イベント処理を実装する必要があります。したがって、結論は、私が見るように、DOM 仕様では同期イベントが fifo 実装されている必要があるということです。非同期イベントの実行は、スタック/スレッドの実装に依存します。Javascript では、2 つのハンドラーがオーバーラップできないことを意味しますが、Java では、たとえば、オーバーラップする必要はありません。