小编典典

jQuery延迟了-我需要管道或链条来实现此模式吗?

ajax

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

您将使用延期api的哪些部分,以及如何构造调用以实现以下目标:

服务的第一个Ajax调用A检索ID列表

等到这个电话回来

然后n个对serviceB的ajax调用,每个调用都使用a,并使用callA返回的列表中的ID

等待所有的serviceB呼叫返回

然后最后一个ajax调用serviceC


阅读 203

收藏
2020-07-26

共1个答案

小编典典

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

(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,但是设置会更加困难(并且不一定更具可读性)。

2020-07-26