jQuery同步非阻塞ajax调用
在我的Web应用程序中,我有一系列快速触发的ajax调用。 在服务器上,这些需要按照从客户端发送的顺序进行处理。
我一直在jQuery中使用async: false
配置来执行此操作。 然而,这会导致GUI变得非常迟缓,同时阻止完成调用。 使用async: true
GUI是响应式的,但请求并不总是按顺序处理。
是否有一种替代非阻塞方式来排队ajax请求,所以下一个请求只在前一个请求完成后发送?
注意:我没有要处理的请求的“列表”。 请求是动态生成的,因此我需要能够在生成它们时将它们填充到某种FIFO队列中,然后使用某个进程来使用队列。
它可以通过jQuery承诺轻松完成:
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'); });