ホームページ  >  記事  >  バックエンド開発  >  同期リクエストと非同期リクエストの違いを詳しく解説

同期リクエストと非同期リクエストの違いを詳しく解説

小云云
小云云オリジナル
2018-03-21 13:12:457660ブラウズ

まず同期と非同期の概念を説明します
同期とは、送信者がデータを送信し、受信者が応答を返すのを待ってから次のデータパケットを送信する通信方法を指します。非同期とは、送信者がデータを送信し、受信者が応答を返してくるのを待ってから、次のデータ パケットを送信する通信方法を指します。
同期通信と非同期通信の概念
同期通信では、双方が同じクロック周波数で通信し、正確に調整する必要があります。単一のクロックまたはタイミング パルス ソースを共有することで、送信側と受信側の正確な同期が保証され、より効率的になります。
非同期通信では、送信側と受信側がそれぞれのクロック ソースを使用でき、送信側が文字を送信する時間間隔は不定です。伝送効率は同期伝送に比べて低くなります。
WEB サービスを呼び出すためのユーザーの通信の選択: 同期または非同期。
ユーザーはサービス呼び出しを同期または非同期で実装できます。コンシューマの観点から見ると、これら 2 つのアプローチの違いは次のとおりです:
同期 - コンシューマは単一のスレッドを通じてサービスを呼び出します。そのスレッドはリクエストを送信し、サービスの実行中にブロックして応答を待ちます。
非同期 - コンシューマーは 2 つのスレッドを通じてサービスを呼び出します。1 つのスレッドがリクエストを送信し、別のスレッドが応答を受信します。
同期および非同期という用語は、シーケンシャルおよび同時実行とよく混同されます。後の 2 つの用語は、個々のタスクを実行する必要がある順序に関連しており、同期と非同期は、スレッドが単一のタスク (単一のサービスの呼び出しなど) を実行する方法に関連しています。同期呼び出しと非同期呼び出しの違いを理解する良い方法は、クラッシュ回復の結果を考慮することです:
同期 - サービスの実行中にブロック中にコンシューマーがクラッシュした場合、再起動すると再起動できなくなります。通話が続いているため、応答が失われます。ユーザーは呼び出しプロセスを繰り返し、今度はクラッシュしないことを祈る必要があります。
非同期 - リクエストを送信した後、応答を待っている間にユーザーがクラッシュした場合、再起動すると応答を待ち続けることができるため、応答は失われません。
同期呼び出しと非同期呼び出しの唯一の違いはクラッシュ回復だけではありませんが、呼び出しが一方向にどのように進むかを判断しようとしている場合は、それぞれがクラッシュ回復をどのように処理するかを検討してください。これにより多くの場合、適切な答えが得られます。
++ ++++++++++++++++++++++++++++++++++++++++++++++++ ++++
Java Web 開発で Ajax を使用する場合は、同期通信モデルと非同期通信モデルの違いを十分に理解することが重要です (「参考文献」を参照)。非同期通信モデルのサポートがないことは、クライアント側の開発、Web フレームワークとの統合、タグ ライブラリの使用、IDE の使用、およびスレッドの動作に影響を及ぼします。
同期リクエスト/レスポンス通信モデルでは、(Web ユーザー経由で) リクエストを開始するのは常にブラウザです (Web サーバー、アプリケーション サーバー、または Web アプリケーションではありません)。その後、Web サーバー、アプリケーション サーバー、または Web アプリケーションが受信リクエストに応答します。同期要求/応答ペアの処理中は、ユーザーはブラウザーを使用し続けることはできません。
非同期リクエスト/レスポンス通信モデルでは、ブラウザ (Web ユーザー経由) から Web サーバー、アプリケーション サーバー、または Web アプリケーションへの通信 (またはその逆) が分離されます。非同期リクエスト/レスポンス ペアの処理では、Web ユーザーは、現在の非同期リクエストが処理されている間もブラウザを使用し続けることができます。非同期リクエストの処理が完了すると、非同期レスポンスが (Web サーバー、アプリケーション サーバー、または Web アプリケーションから) クライアント ページに返されます。通常、このプロセスの間、呼び出しは Web ユーザーに影響を与えません。応答を待つ必要はありません。
Jquery ajax でのデータの送信は同期または非同期で行うことができます。 1. 同期と非同期の違いは何ですか? , 2.どのような状況で使用されますか? 同期: リクエストを送信します -> サーバーの処理を待ちます -> 処理して戻った後、この期間中、クライアントのブラウザは何もできません
非同期: リクエストはイベントによってトリガーされます -> サーバーの処理 (つまり、ブラウザは他の処理を行うことができます) 1. 私の理解: 1. ひたむきさ: 現時点では 1 つのことしか実行できず、他のことは現在のことが完了するまで待たなければ、次のことを続けることができません。 2. 中途半端: 同時に複数のことを行うことができます。左手でスペースバーを押し、右手でマウスを打ち続け、目は同時に画面を見なければなりません。これは非常に面倒です。難しい。 2. 次のスクリプトを見てください: function

ValidateClick()
{ var areaNo=$("#<%=drpList.ClientID %>").val(); if(areaNo) { alert("请选择"); return false; } $.ajax({
cache:"False",
type:"POST", (A)//async: false, 【(A)】
url:"Validate.ashx",
data:$("#form1").serialize(), 
success:function(o)
{ 
if(o=="ERROR") { alert("输入错误!"); return false;} 
else if(o=="OK")
{ alert("正确!");return true; } 
else
{ alert("其他错误!"); return false;}
},
error:function(xhr, ajaxOptions, thrownError)
{ alert("网络异常,稍后重试!"); return false; }
}); // 【(B) 】 //alert("这里");return true;}

(A): デフォルトは true ではありません。これは、非同期送信が使用されることを意味します。 async: true の場合: POST を使用して URL ページにデータを送信すると、 [(B)] のメソッドまたは関数は、(A) が結果を返したか、(B) が実行されたかに関係なく、(A) で結果が返されたときにプロンプ​​トが表示されます。指定された if に基づいて、非同期の場合: false の場合: このとき、(A) で結果が返されるのを待ってから、if 判定文を実行する必要があります。判定が完了したら、() で関数を実行します。 B)。

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

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