[解決済み】JavaScriptが同期であるのはいつ?
2022-04-20 15:14:23
質問
JavaScriptは常に非同期であるという印象を持っています。 しかし、そうでない状況もあることを知りました(たとえばDOM操作)。 いつ同期でいつ非同期なのか、どこか良い参考文献はないでしょうか? jQueryはこれに全く影響を与えないのでしょうか?
解決方法は?
JavaScriptは常に同期でシングルスレッドです。 あるページでJavaScriptのブロックコードを実行している場合、そのページ上の他のJavaScriptは現在実行されていません。
JavaScriptが非同期なのは、例えばAjaxを呼び出すことができるという意味においてのみです。Ajax呼び出しは実行を停止し、呼び出しが(成功するかどうかにかかわらず)戻るまで他のコードを実行することができ、その時点でコールバックが同期的に実行されます。この時点では、他のコードは実行されていません。現在実行中の他のコードを中断することはありません。
JavaScriptのタイマーもこれと同じようなコールバックで動作します。
JavaScriptを非同期と表現するのは誤解を招くかもしれません。JavaScriptは同期でシングルスレッドであり、様々なコールバック機構を備えていると言った方が正確です。
jQuery には、Ajax 呼び出し時に、同期的に呼び出すオプションがあります (
async: false
というオプションがあります)。初心者は、より伝統的なプログラミングモデルに慣れているため、これを間違って使ってしまうかもしれません。このオプションが問題なのは、このオプションが
すべて
すべてのイベントハンドラやタイマーを含め、ページ上の JavaScript が終了するまで。
関連
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] HTMLマークアップのどこに<script>タグを記述すればよいですか?
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】JavaScriptのisset()に相当するもの
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み] ReactのsetStateで状態が更新されない
-
[解決済み] 非同期実行と同期実行、その主な違いは?[クローズド]
-
[解決済み] JavaScriptはシングルスレッドであることが保証されていますか?