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