この質問は、Ajaxリクエストが送信された順序で返されることが保証されていないことを示唆しているようです。ただし、AjaxはTCPプロトコルを使用します。これにより、パケットが送信された順序で返されることが保証されているようです。
順序付けられたデータ転送—宛先ホストはシーケンス番号に従って再配置されます
非同期Ajaxリクエストは、送信された順序で返されることが保証されていますか?
いいえ。
これはTCPとは何の関係もありません。これは、リクエストをHTTPサーバーで処理する必要があるためであり、並列リクエストが完了するまでに同じ時間がかかるという保証はありません。
非同期Ajaxリクエストは、送信された順序で返されることが保証されていますか?
いいえ。サーバーが最初の要求に応答するのに、たとえば3倍の時間がかかる場合はどうなりますか?例:
ここで2つのコンテキストを混同していると思います。ajaxで2つのリクエストを「同時に」開始すると、一方が他方より先に返されることが保証されません。これは、OSI モデルの別のレイヤーにある TCP とは関係ありません。TCP パケットはトラフィックを構成し、「並べ替えと再配置」は http プロトコル (ajax はその一部) にはまったく見えません。
「非同期」という用語は、あなた自身の質問に答えます。ただし、非同期リクエストが実質的に同期になる場合があります。詳細については、彼の回答を参照してください。
リクエストを送信すると、サーバーはそのリクエストの処理を開始します。別の要求が続く場合、サーバーは (可能であれば) その処理を開始します。各リクエストが終了すると (出力の有無にかかわらず)、コールバックが発生します (存在する場合)。
1 つの TCP 要求に関連するすべてのパケットは、順番に受信されることが保証されます。ただし、この順序は単一のリクエストにのみ適用されます。複数の要求がさまざまなホストに送信される可能性があり、通常、対話しているホストから応答を受信する順序について保証はありません。したがって、非同期リクエストを送信する場合、基本的に複数のリクエストを並行して送信することになり、各リクエストは他のすべてのリクエストから独立しているため、リクエストが応答される順序を保証することはできません。
Ordered data transfer — the destination host rearranges according to sequence number
あなたは正しい...しかし、それを文脈から外してください。AJAX 要求は HTTP を介して行われ、HTTP は TCP を介して行われます。
各 AJAX リクエストは異なる HTTP リクエストであり、異なる TCP 接続を介して行われるため、思い通りに並べ替えられたり順序付けられたりすることはありません。
各 AJAX HTTP 要求の処理にかかる時間はさまざまであり、それらは同時に処理されるため、処理が完了する順序について保証はありません。