6

我正在尝试使用延迟的 JQuery 来实现以下场景,但运气不佳。

您将使用延迟 API 的哪些部分,以及如何构建调用以实现以下目标:

对 serviceA 的第一个 ajax callA 检索 Id 列表

等到这个调用返回

然后 n ajax 调用 serviceB,每次调用都使用 callA 返回的列表中的 Id

等到所有 serviceB 调用都返回

然后是对 serviceC 的最终 ajax 调用

4

1 回答 1

12

你可以这样做(或多或少的伪代码):

(function() {
    // new scope
    var data = []; // the ids coming back from serviceA

    var deferredA = callToServiceA(data); // has to add the ids to data

    deferredA.done(function() { // if callToServiceA successful...
        var deferredBs = [];

        for i in data {
            deferredBs.push(callToServiceB(...));
        }

        $.when.apply($, deferredBs).then(callToServiceC); 
    });

}());

callToServiceX函数应该返回由$.ajax.

可能有一个“更干净”的解决方案,而不是data在共享范围内使用resolve,但设置会更困难一些(并且不一定更具可读性)。

于 2011-07-11T09:33:24.970 回答