
No.1ベストアンサー
- 回答日時:
本来イベントは非同期(マルチスレッド)で動くべきのような気がしますが、
こちらでFirefox1.5 で試してみたところ(ブラウザによって違うのかもしれません、addEventListner のリファレンスには、登録したイベントハンドラが同期的に呼び出されるのか非同期的に呼び出されるのかについては、書かれていないようでした)
(3つのイベントハンドラにループ待ちの時間をそれぞれ設定し実行開始・終了時間を書き出すようにしてみた)
登録した順番に(前のハンドラの終了を待って次のハンドラが呼び出される)実行され、非同期に呼び出されるのではないようでした。
この回答への補足
その場合、終了というのはaddEventListnerに登録された関数の終了をもって判断するのでしょうか?
その辺がわからないと、タイマーでタイムアウトをチェックするなんて場合にとても怖いので・・。
No.4
- 回答日時:
#2>この関数の処理が延々と長い場合、次のイベントはずっと呼ばれないのだろうか?
Firefoxで試してみたところでは、次にはいきません。
>非同期のオブジェクトであるXMLHttpRequestの呼び出しが行われた段階で、次のイベントに処理が移ったのだろう
コールバックで処理するようにしてあるならそうなると思います。
No.3
- 回答日時:
仕様のみの話をすれば、DOM2 Events ではイベントリスナ発動の順序を定義していません。
現時点で Working Draft である DOM3 Events では、イベントリスナをグループ化し、グループ内における発動順を指定できるようです(しかしグループ間の発動順序は定義されません……実装次第ということでしょう)。
なお IE の attachEvent に関しては「the functions are called in random order」と MSDN に明記されています。
そういうわけですので、リスナ間でメッセージを送り合ってうまく調整して下さい。
参考URL:http://www.w3.org/TR/DOM-Level-3-Events/events.h …
No.2
- 回答日時:
#1>その場合、終了というのはaddEventListnerに登録された関数の終了をもって判断するのでしょうか?
ごめんなさい、意味がよくわかりませんでした。
もう少し詳しく補足していただけますか?
(どちらにしても、私は実験的に得られた結果で言ってるだけですが)
この回答への補足
登録したはずなんですけど消えてました・・・なぜだろう。
わかりにくくてすみません。
言いたかったのは、イベントが起こると登録された関数が呼ばれるわけですが、この関数の処理が延々と長い場合、次のイベントはずっと呼ばれないのだろうか・・・という疑問だったのです。
今回こちらで起こった現象というのは、非同期のオブジェクトであるXMLHttpRequestの呼び出しが行われた段階で、次のイベントに処理が移ったのだろうと推測しています。
多分XMLHttpRequestオブジェクトを複数作成すれば同時に走らせてもきちんと動作する・・・のでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 邦楽 アーティストのライブのスタッフ 1 2022/12/11 12:43
- YouTube Googleアカウント1個で複数のYouTubeチャンネルを作った場合、登録者数などは通算される? 4 2022/05/16 14:22
- 一眼レフカメラ SONY製ミラーレス一眼の人物撮影 1 2022/10/28 20:00
- その他(アニメ・マンガ・特撮) イベントの参加について 1 2022/07/14 08:23
- Excel(エクセル) エクセル関数の詳しい方に質問です 2 2023/01/12 12:48
- その他(ゲーム) 作品への冒涜について 5 2023/08/25 18:01
- ハロウィン ハロウィンの仮装 4 2022/10/31 17:17
- YouTube youtubeで特定の登録者の動画だけを表示したい 3 2023/08/23 13:03
- メルカリ メルカリShopsを作るとメルカリで販売は楽になりますか メルカリとまったく変わりませんか? 2 2022/10/11 19:22
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jsonテキストデータの並び替え...
-
jQueryで同じクラス名のものを...
-
GASでGoogleフォームの自動返信...
-
<tr>指定した表の行要素をボ...
-
プログラミング 学習
-
読み込んだQRコードをフォーム...
-
スマホ上で、左右スワイプで次...
-
初心者です。gulpでコンパイル...
-
【GAS】WEBアプリでハイパーリ...
-
jsで質問です。 ボタンが二つ存...
-
functionはhtmlやjsに2度使えま...
-
jsで、switch文で書かれた分をi...
-
jqueryのselect2で検索欄の文字...
-
<div>のタッチ状態を維持したま...
-
ボタンを押したあとに画像を表...
-
出発駅A、到着駅Bを選択すると...
-
タグを教えてください。
-
CookieをWebStoeageに変える
-
Adobe acrobat proでフォームを...
-
メールフォームの日付入力フォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
LRESULTとHRESULT
-
#define 文
-
TextChangeイベントが発生しない
-
ifdefとenum
-
クラス内に自作のイベントを定...
-
PHP + MySQL で登録時に重複チ...
-
時間差を取得結果を求めるには
-
アクティブなウィンドウのみ、...
-
callbackってなんですか。
-
【javaScript】KeyboardEventで...
-
プレロードイメージについて
-
Javascriptのreturnについての...
-
char[]とchar*
-
SetTimer関数について
-
isLoading:Boolean = trueの使い道
-
PHP requireの後にJS実行
-
functionのパラメータの渡し方...
-
【JavaScript】イベント伝播の...
おすすめ情報