我正在尝试使用延迟的JQuery来实现以下方案,但运气不佳。
您将使用延期api的哪些部分,以及如何构造调用以实现以下目标:
服务的第一个Ajax调用A检索ID列表
等到这个电话回来
然后n个对serviceB的ajax调用,每个调用都使用a,并使用callA返回的列表中的ID
等待所有的serviceB呼叫返回
然后最后一个ajax调用serviceC
您可以这样做(或多或少的伪代码):
(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。
callToServiceX
$.ajax
可能会有一个比“更干净”的解决方案,而不是使用data共享范围resolve,但是设置会更加困难(并且不一定更具可读性)。
data
resolve