zad*_*dam 6 javascript ajax jquery jquery-deferred
我正在尝试实现下面的场景,使用JQuery延迟,没有太多运气.
您将使用延迟api的哪些部分,以及如何构建调用以实现以下目标:
第一个ajax callA到serviceA检索ID列表
等到这个电话回来
然后n ajax调用serviceB,每次调用使用callA返回的列表中的Id
等到所有serviceB调用都返回
然后是对serviceC的最终ajax调用
Fel*_*ing 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函数应返回由返回的promise对象$.ajax.
可能有一个"更清洁"的解决方案,而不是data在共享范围内resolve,但是设置会更困难(并且不一定更具可读性).
| 归档时间: | 
 | 
| 查看次数: | 2488 次 | 
| 最近记录: |