我一直在 jquery 1.5 中测试新的延迟 AJAX 函数,并且对它们的简单性和功能印象深刻。我有一个更大的问题与将这些请求排队的最佳方式有关。
我有两种情况:串行和并行,如果你愿意的话。我想避免使用同步/异步术语,因为我确实希望所有这些都是异步请求,以便用户可以在等待队列处理时执行其他操作。然后,我想在队列完成处理后调用单个函数。
在有两个请求的“串行模式”中,我希望它们按如下方式处理:
RequestA -> ResponseA -> RequestB -> ResponseB -> EndOfQueue
在有两个请求的“并行模式”中,我想要这个结果:
RequestA -> RequestB (ResponseA, ResponseB 准备就绪时处理) -> EndOfQueue
在任何一种情况下,如果任何请求失败,我都希望队列停止并将控制权传递给失败函数。
我有指定动态队列长度的要求,所以我认为我不能将一堆 .then() 或 .when() 延迟串在一起,因为我不知道它是一个还是一百个项目. 我正在通过供应商的 API 在服务器上执行业务逻辑,因此服务器端批处理将很困难,因为我无法控制该代码。
我已经构建了执行“并行”案例并在所有成功完成后调用 when() 函数的测试用例,但是这些测试在队列长度上不是动态的,并且不能移植到串行模型。
我可以看到如何创建一个自定义队列对象来处理这个问题,但似乎所有部分都已经在 jquery (?) 中为我编写了。我看过,但没有找到以这种方式涵盖顺序请求的示例。
关于如何使用 jquery 队列/延迟功能处理此问题的任何想法?