ホームページ > ウェブフロントエンド > フロントエンドQ&A > ajaxはマルチスレッドですか?

ajaxはマルチスレッドですか?

青灯夜游
リリース: 2022-01-19 15:08:29
オリジナル
2496 人が閲覧しました

ajax はマルチスレッドではなくシングルスレッドです。JavaScript はシングルスレッドであり、Ajax は JavaScript カテゴリに属しているため、Ajax はシングルスレッドです。 Ajax を使用してマルチスレッドを実現できる理由は、Web サーバーに依存しており、サーバーはマルチスレッドを使用してリクエストを処理します。

ajaxはマルチスレッドですか?

このチュートリアルの動作環境: Windows 7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

Ajax はシングルスレッドですか、それともマルチスレッドですか?

まず第一に、明確にしておきます: Ajax はシングルスレッドです。JavaScript はシングルスレッドであり、Ajax は JavaScript のカテゴリに属しているため、Ajax はシングルスレッドです。ねじ切りされた。 Ajax を使用してマルチスレッドを実現できる理由は、Web サーバーに依存しており、サーバーはマルチスレッドを使用してリクエストを処理します。

それでは、はっきりさせておきますが、ブラウザはマルチプロセスです。図に示すように、Google Chrome でタブページを開くたびに、子プロセスが存在します。

JS はブラウザ内で実行されるため、シングルスレッドです。各ウィンドウには JS スレッドがあります。シングルスレッドであるため、特定のスレッドのみが存在します。特定の瞬間にコードが実行され、他のコードがブロックされる可能性があります。

Ajax は非同期ですか?

Ajax リクエストは確かに非同期です。js エンジンは待たずに非同期コードを実行します。これは、メッセージ キューイベント ループがあるためです。このリクエストはそれを実行します。ブラウザによって新しいスレッドを開くように要求されます。ブラウザの動作の多くは非同期です。非同期イベントが発生すると、イベント キューに入ります。ブラウザには内部に大規模なメッセージ ループであるイベント ループがあり、大規模なイベント キューをポーリングしてイベントを処理します。このイベントは実行されるだけです。前の処理が完了し、イベントがアイドル状態になった後、JavaScript エンジンは常に単一スレッドでコールバック関数を実行します。

結論:

Ajax リクエストは確かに非同期です。このリクエストは、新しいスレッド リクエストを開くためにブラウザによって行われます。イベントがコールバックされると、イベント ループのシングル スレッドに投入され、処理を待機しているイベント キュー。

メッセージ キューには、非同期タスクの登録時に追加したコールバック関数が含まれており、メイン スレッドが AJAX リクエストを開始した後、他のコードの実行を継続します。 AJAX スレッドは URL のリクエストを担当します。応答を取得した後、応答を JavaScript オブジェクトにカプセル化し、メッセージを構築します:

// ajax请求
$.ajax(url, function(resp) {
    console.log('我是响应:', resp);
});
 
 
// 消息队列中的消息就长这个样子
var message = function () {
    callbackFn(response);
}
// 其中的callbackFn就是前面代码中得到成功响应时的回调函数。
ログイン後にコピー

メインスレッドが現在のループ内のすべてのコードを実行した後, メッセージを受信します キューはこのメッセージを取り出して実行します この時点でワーカースレッドからメインスレッドへの通知が完了し、コールバック関数が実行されます。メインスレッドが最初にコールバック関数を提供しない場合、AJAX スレッドは HTTP 応答を受信した後にメインスレッドに通知する必要がなく、メッセージキューにメッセージを入れる必要もありません。 このうち、非同期処理のコールバック関数は、今回のイベントループ内で実行してはなりません。

[関連チュートリアルの推奨事項: AJAX ビデオ チュートリアル]

以上がajaxはマルチスレッドですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート