我一直在测试JQuery 1.5的新推迟Ajax功能,并对它们的简单和力量印象深刻。我有一个更大的问题与排队这些请求的最佳方法有关。

我有两种情况:串行和平行,如果可以的话。我想避免使用同步术语,因为我确实希望所有这些都是异步请求的,因此用户可以在等待队列处理时执行其他操作。然后,我想在队列完成处理后调用单个功能。

在“串行模式”中,有两个请求,我希望它们处理如下:

requesta-> wendersea-> requestb-> wendespb-> endofqueue

在“并行模式”中,有两个请求我想要这个结果:

requesta-> requestB(响应,响应b时,随时处理) - > endofqueue

无论哪种情况,如果任何请求失败,我都希望队列停止并传递控制功能。

我有指定动态队列长度的要求。我正在通过供应商的API在服务器上执行业务逻辑,因此服务器端批处理将很难,因为我无法控制该代码。

我已经构建了执行“并行”案例的测试用例,并在成功完成后调用wher()功能,但是这些测试在队列长度上并不动态,也不适用于串行模型。

我可以看到如何创建一个自定义队列对象来处理它,但是似乎所有部分都已经在jQuery(?)中为我写了。我看了看,但还没有找到以这种方式涵盖顺序请求的示例。

关于如何使用jQuery队列/递延功能来处理此问题的任何想法?

有帮助吗?

解决方案

实现您的请求的最简单方法 - > peslastea-> requestB->响应b订单是使用这样的东西:

var queue = [];

function qNext() {
    $.ajax(queue.shift()).success(qNext);
}

function qAjax(options) {
    queue.push(options);
}

qAjax({
    // $.ajax options
});

qAjax({
    // $.ajax options
});

qNext();

演示.

这是您需求的简化版本,但是在队列为空之后,很容易添加回调以运行。

您确定您不希望请求A的顺序 - > requestB-> peslastea-> wendespeb吗?

其他提示

请参考我问的两个问题

  1. jQuery推迟不工作
  2. 当理解时

希望您应该能够理解这个概念。

看到这个 评论 on .when()方法从延迟ajax函数

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top