jQuery同步非阻塞ajax调用

jQuery同步非阻塞ajax调用,jquery,ajax,asynchronous,nonblocking,Jquery,Ajax,Asynchronous,Nonblocking,在我的web应用程序中,我有一系列快速启动的ajax调用。在服务器上,需要按照与从客户端发送的顺序相同的顺序处理这些数据 我一直在使用jQuery中的async:false配置来实现这一点。但是,这会导致GUI变得非常缓慢,同时会阻止调用完成。使用async:true时,GUI会做出响应,但请求并不总是按顺序处理 是否有其他非阻塞方式来排队ajax请求,以便只在前一个请求完成后发送下一个请求 注意:我没有要处理的请求的“列表”。请求是动态生成的,因此在生成请求时,我需要能够将它们塞进某种FIFO

在我的web应用程序中,我有一系列快速启动的ajax调用。在服务器上,需要按照与从客户端发送的顺序相同的顺序处理这些数据

我一直在使用jQuery中的
async:false
配置来实现这一点。但是,这会导致GUI变得非常缓慢,同时会阻止调用完成。使用
async:true
时,GUI会做出响应,但请求并不总是按顺序处理

是否有其他非阻塞方式来排队ajax请求,以便只在前一个请求完成后发送下一个请求


注意:我没有要处理的请求的“列表”。请求是动态生成的,因此在生成请求时,我需要能够将它们塞进某种FIFO队列中,然后通过一些进程使用队列。

这可以通过以下方式轻松完成:


您可以在前一个任务完成后调用每个任务。我认为
done
可以有参数
.done(函数(a1,a2){…})
@Sheikh Heera:是的,但我不知道如何为所有延迟任务执行该操作(以防我们将它们链接起来,而不是同时运行)。如果我们只在
secondAjax
OK中手动传递
参数
,问题是我没有“拥有”这个过程开始时我将要进行的所有调用…@pimvdb:看看上面的评论:“好的,问题是我没有”这个过程开始时我将要进行的所有调用”-所以OP没有在一个地方进行所有延迟,因此,他需要能够添加管道请求(这实际上就是为什么我没有使用单个
$。when()
啊,我很抱歉。(我想用
$来包装第一个调用。when
不是很有用。)
function firstAjax() {
    return $.ajax({...});
}

function secondAjax() {
    return $.ajax({...});
}

firstAjax().pipe(secondAjax).pipe(...).done(function() {
    alert('all requests have successfully finished');
});
$.when(firstAjax()).pipe(secondAjax).pipe(...).done(function() {
    alert('all requests have successfully finished');
});