ホームページ  >  記事  >  ウェブフロントエンド  >  Ajax同期と非同期の違いは何ですか

Ajax同期と非同期の違いは何ですか

青灯夜游
青灯夜游オリジナル
2022-01-13 17:47:5310191ブラウズ

違い: 1. 同期では、スレッドは実行を開始する前に前のスレッドの実行が完了するまで待機する必要がありますが、非同期では、スレッドが実行中の場合、次のスレッドはそれを待たずに実行を開始できます。実行を終了する; 2. 同期 これはシングルスレッド操作ですが、非同期操作はマルチスレッド操作です; 3. 非同期操作は同期より効率的です。

Ajax同期と非同期の違いは何ですか

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

ajax 非同期リクエスト:

非同期リクエストとは、リクエストが行われている間、ブラウザは引き続き何でもできることを意味します。Ajax によるリクエストの送信は読み込みには影響しません。ユーザーの操作は 2 行に相当し、それぞれが互いに影響を与えることなく独自の方向に進みます。一般的なデフォルト値は true です。非同期リクエストはユーザー エクスペリエンスにまったく影響を与えず、リクエストの長短に関係なく、ユーザーはページ上の他のコンテンツの操作に集中しており、待つ気はありません。

例:

$.ajax({ 
     type:"POST",
     url:"Venue.aspx?act=init",
      dataType:"html",
     success:function(result){  //function1()
       f1();
       f2(); 
    }
     failure:function (result) { 
      alert('Failed'); 
     },
 }
 function2();

説明: 上記のコードでは、ajax ブロックがリクエストを送信すると、function1() に留まり、サーバーからの戻りを待ちますが、同時に(この待機プロセス中に)、フロントデスクは function2() を実行します。

ajax 同期リクエスト:

同期リクエストとは、現在のリクエストが発行された後はブラウザが何もできないことを意味します。リクエストが完了し、データは実行される前に返されます。後続のコードはキューイングと同等です。つまり、JS コードが現在の ajax にロードされると、ページ内のすべてのコードのロードが停止し、ページは次の状態になります。一時停止アニメーションの状態。ajax が完了すると、他のコード ページは実行を継続します。一時停止アニメーション状態を解放します (つまり、ajax がデータを返した後でのみ後続の関数を実行します)。

例:

$.ajax({ 
     type:"POST",
     url:"Venue.aspx?act=init",
     dataType:"html",
     async: false,    success:function(result){  //function1()
       f1();
       f2();
     }
    failure:function (result) { 
      alert('Failed'); 
     },
 }
 function2();

説明: 上記のコードでは、asyn が false に設定されている場合、ajax リクエストは同期されます。つまり、ajax ブロックがこの時点でリクエストを送信した後です。今度は、関数 1() で待機し、関数 1() 部分が完了するまで関数 2() を実行しません。

ajax 同期リクエストと非同期リクエストの意味を読んだ後、ajax 同期リクエストと非同期リクエストの違いを見てみましょう。

ajax 同期リクエストと非同期リクエストの違い:

同期とは、スレッドが前のスレッドの実行が完了するまで待機する必要があることを意味します。実行を開始できます 同期 シングルスレッド操作と見なすことができます クライアントがリクエストを行う限り、サーバーが情報をフィードバックしない限り、スレッドはブロック状態になります。

非同期とは、1 つのスレッドが実行中に、その実行の終了を待たずに次のスレッドが実行を開始できることを意味します。非同期は間違いなくマルチスレッドです。クライアントが要求すると、他のスレッドが実行され、このスレッドはキューに格納され、順序どおりに実行されます。

非同期の効率は同期よりも高くなります。データがスレッド間で共有される場合は、同期を使用する必要があります。

非同期モード:

AJAX を使用してリクエストを送信した後、実行する必要があるコードがまだある場合があります。現時点では、さまざまな理由によりサーバーがリクエストに応答していない可能性がありますが、非同期実行を使用しているため、AJAX リクエスト コードを含むすべての関数の残りのコードは引き続き実行されます。リクエストの結果を別の JS 関数に渡して処理すると、2 つのスレッドが同時に実行されているような状態になります。

同期モード:

AJAX を使用してリクエストを送信した後も、後で実行する必要があるコードがまだあります。また、サーバーの応答も渡します。別のJS関数を処理していますが、このときのコード実行状況は、サーバーが応答しない場合、または応答結果を処理するJS関数が処理を完了していない場合、リクエストコードを含む関数の残りのコードを実行できません。処刑される。単一スレッドと同様に、リクエストが送信された後にブロック状態に入り、残りのコードはブロック状態になるまで実行を継続しません。

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

以上がAjax同期と非同期の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。