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