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

我正在尝试实现下面的场景,使用JQuery延迟,没有太多运气。

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

第一个ajax callA到serviceA检索ID列表

等到这个电话回来

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

等到所有serviceB调用都返回

然后是对serviceC的最终ajax调用

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

(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返回的promise对象。

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