序列化POST请求jQuery/Javascript
我正在开发一个应用程序,它每1500毫秒发送一个AJAX POST请求(我目前正在使用jQuery)。我注意到,大多数情况下,这些请求在350-450毫秒内成功,并以与生成请求相同的顺序发送到服务器序列化POST请求jQuery/Javascript,javascript,jquery,Javascript,Jquery,我正在开发一个应用程序,它每1500毫秒发送一个AJAX POST请求(我目前正在使用jQuery)。我注意到,大多数情况下,这些请求在350-450毫秒内成功,并以与生成请求相同的顺序发送到服务器 但是,有时,一个或两个请求需要将近3-4秒,并且会在稍后发送。在我的应用程序中,我需要确保服务器接收这些请求的顺序与从客户端发送的顺序相同。我该怎么做?我目前使用setInterval 1500毫秒来调用函数(生成要发布的数据)并使用$.ajax()发布它。但是,我如何序列化请求?不知道在javas
但是,有时,一个或两个请求需要将近3-4秒,并且会在稍后发送。在我的应用程序中,我需要确保服务器接收这些请求的顺序与从客户端发送的顺序相同。我该怎么做?我目前使用setInterval 1500毫秒来调用函数(生成要发布的数据)并使用$.ajax()发布它。但是,我如何序列化请求?不知道在javascript中如何实现,但您可以创建一个请求列表或数组,即先进先出类型的列表,因此当准备就绪时,您可以将请求或创建请求所需的任何值推送到数组中,设置好间隔后,从数组中提取并发送请求。基本上,您将以这种方式对请求进行排队。一种方法是包括一个随js发送的时间戳,在接收端,您可以将每个调用添加到队列中,然后在通过
时间戳DESC
排序后执行
如果您提供有关实际发生情况的更多信息,可能您可以根据哪种类型的请求调整间隔(例如,预期响应时间有多长?以下内容将等待服务器响应,然后启动1500ms计时器启动下一个请求
$(function() {
var recursive = arguments.callee;
$.post("http://url", { /* data */ }, function() {
setTimeout(recursive, 1500);
});
});
在异步设置中,您无法保证响应的顺序。然而,你能做的是
这将保证结果的序列化执行。但是需要注意超时或出错的请求,以避免延迟后续处理。这将是一个很好的解决方案。请记住,在失败和成功的ajax请求上都要继续排队。我看不出这与他现在所做的有什么不同。是的,基本上我不关心要排序的数据的生成—我以正确的顺序发送它们—但有些请求需要更长的时间,而其他请求在它们之后发送,在它们之前成功。