我正在编写一些JavaScript / AJAX代码。
无论如何确保服务器按照发送顺序接收 XML请求?
如果没有普通的Ajax,如果我通过一个WebSocket发送所有东西,我能得到这个保证吗?
谢谢!
答案 0 :(得分:1)
我想到了几个选项:
<requestNum>1</requestNum><numRequests>5</numRequests>
。这并不保证他们收到的订单,但保证他们可以在之后按顺序退回,并且还有确保您拥有所有数据的额外好处。答案 1 :(得分:1)
如果以正确的顺序收到它们至关重要,并且在表单中附加迭代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()
- 将对象放入队列中 - 所以先进先出,就像你想要的那样。)
答案 2 :(得分:0)
在我的公司,我们使用这个由{j}核心贡献者之一编写的小ajaxQueue
插件: