我一直在jQuery 1.5中测试新的延迟AJAX函数,并且对它们的简单性和功能印象深刻。我有一个更大的问题与排队这些请求的最佳方式有关。如何在jQuery 1.5中管理ajax请求的队列?
我有两种情况:串行和并行,如果你愿意的话。我想避免同步/异步条款,因为我确实希望所有这些都是异步请求,以便用户可以在等待队列进行处理时执行其他操作。然后我想在队列完成处理时调用一个函数。
在具有两个请求我希望如下它们处理过的 “串行模式”:
RequestA - > ResponseA - > RequestB - > ResponseB - > EndOfQueue
在 “并联模式”有两个请求我想这样的结果:
RequestA - > RequestB(ResponseA,ResponseB处理每当准备好) - > EndOfQueue
在这两种情况下,如果任何请求失败,我想队列停止并通过控制失效功能。
我有要求,指定一个动态的队列长度,所以我不认为我可以只将一堆.then()或.when()延迟在一起,因为我不知道它是否是一个或一百个项目。我通过供应商的API在服务器上执行业务逻辑,因此服务器端批处理将很困难,因为我无法控制该代码。
我已经建立测试用例执行“平行”的情况下,并调用()函数时毕竟已经成功完成,但这些测试是不是在队列长度动态的,是无法移植到串行模式。
我可以看到我怎么能创建一个自定义队列对象来处理这个问题,但似乎一切对我来说jQuery中已经写的部分(?)。我看了,但还没有找到一个以这种方式覆盖顺序请求的例子。
有关如何使用jQuery的队列/延迟的功能处理这个有什么想法?
谢谢!我会给这个镜头。在这个应用程序中,我们需要确保请求B在接收到响应A之前未启动,因为通常依赖于B的指令中A的结果。 – Graham 2011-03-15 21:08:40
@Graham:观看Pedro Teixeira的[Asynchronous Iteration Patterns](http://nodetuts.com/tutorials/19-asynchronous-iteration-patterns.html)教程。他谈论Node.js,但这些模式可以用于任何JavaScript代码。我想你可能会发现一些有用的技巧,可以帮助你做你想做的事情。当我写我的答案时,我完全忘了它。 – rsp 2011-03-15 21:20:48
非常有趣,再次感谢您的链接。我得到了一些关于如何构建自定义ajax队列对象的好主意。 – Graham 2011-03-15 21:42:14