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