Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery延迟-我需要管道或链来实现这种模式吗?_Javascript_Jquery_Ajax_Jquery Deferred - Fatal编程技术网

Javascript jQuery延迟-我需要管道或链来实现这种模式吗?

Javascript jQuery延迟-我需要管道或链来实现这种模式吗?,javascript,jquery,ajax,jquery-deferred,Javascript,Jquery,Ajax,Jquery Deferred,我正在尝试实现以下场景,使用JQuery deferred,运气不好 您将使用延迟api的哪些部分,以及如何构造调用以实现以下目标: 第一个ajax调用服务a检索ID列表 等待此呼叫返回 然后n个ajax调用serviceB,每个调用都使用callA返回的列表中的Id 等待所有serviceB呼叫返回 然后,对serviceC的最后一个ajax调用可以这样做(或多或少是伪代码): callToServiceX函数应该返回由$.ajax返回的promise对象 与共享作用域中的数据相比,可能有一个

我正在尝试实现以下场景,使用JQuery deferred,运气不好

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

第一个ajax调用服务a检索ID列表

等待此呼叫返回

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

等待所有serviceB呼叫返回

然后,对serviceC的最后一个ajax调用可以这样做(或多或少是伪代码):

callToServiceX
函数应该返回由
$.ajax
返回的promise对象


与共享作用域中的
数据相比,可能有一个“更干净”的解决方案,但是设置会有点困难(不一定更易读)。

谢谢您的帮助。以下是实现该设计的JSFIDLE:
(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); 
    });

}());