JavaScript/AJAXコードを書いています。
サーバーがXML要求を送信された順序で確実に受信するようにする方法はありますか?
プレーンなAjaxを使用していない場合、すべてを1つのWebSocketで送信すると、この保証が得られますか?
ありがとう!
JavaScript/AJAXコードを書いています。
サーバーがXML要求を送信された順序で確実に受信するようにする方法はありますか?
プレーンなAjaxを使用していない場合、すべてを1つのWebSocketで送信すると、この保証が得られますか?
ありがとう!
いくつかのオプションが思い浮かびます。
<requestNum>1</requestNum><numRequests>5</numRequests>
。これは、受信した順序を保証するものではありませんが、後で元に戻すことができることを保証し、すべてのデータを確実に保持できるという追加の利点があります。それらが適切な順序で受信されることが最も重要であり、フォームに反復IDを付加するだけでは不十分な場合:
msg_number = 1; sendAJAX(msg_number); msg_number++;
次に、独自のキューシステムを構築し、後続の各ファイルを前のファイルのコールバックとして送信することをお勧めします。
各要素が独自のAJAXアクセスを持つのではなく、それを処理するためにアプリケーションに1つの集中スポットを作成します。
さまざまなAJAX対応セクションは、それがキューであることを知る必要さえありません。
AJAX.send({ url : "......", method : "post", success : func(){}, syncronous : true });
その反対側では、次のようなものがあります。
AJAX.send = function (obj) {
if (obj.synchronous) {
addToSyncQueue(obj); checkQueue();
} else { fireRequest(); }
};
同期キュー内で行う必要があるのは、古いコールバックの周りに新しい関数をラップすることだけです。
callback = (function (old_cb) {
return function (response) {
checkQueue();
old_cb(response);
};
}(obj.success));
obj.success = callback;
AJAX.call(obj);
の内部ではcheckQueue
、空であるかどうかを確認する必要があります。空でない場合は、を使用します
nextObj = queue.shift();
(.push()
オブジェクトをキューに追加する場合は、必要に応じて先入れ先出しを行います)。
私の会社ではajaxQueue
、jQueryの主要な貢献者の1人によって書かれたこの小さなプラグインを使用しています。