[英]JavaScript: Ajax Requests in Order
我正在寫一些JavaScript / AJAX代碼。
反正是否確保服務器按照發送順序接收 XML請求?
如果沒有普通的Ajax,如果我通過一個WebSocket發送所有東西,我能得到這個保證嗎?
謝謝!
我想到了幾個選項:
<requestNum>1</requestNum><numRequests>5</numRequests>
。 這並不能保證收到它們的順序,但保證它們可以在之后按順序放回,並且具有確保您擁有所有數據的額外好處。 如果以正確的順序接收它們是至關重要的,並且將迭代id附加到表單是不夠的:
msg_number = 1; sendAJAX(msg_number); msg_number++;
然后我建議構建自己的隊列系統,並將每個后續文件作為前一個文件的回調發送。
而不是每個元素都有自己的AJAX訪問權限,而是在應用程序中創建一個集中位置來處理它。
您的不同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貢獻者編寫:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.