我正在尝试使用延迟的 JQuery 来实现以下场景,但运气不佳。
您将使用延迟 API 的哪些部分,以及如何构建调用以实现以下目标:
对 serviceA 的第一个 ajax callA 检索 Id 列表
等到这个调用返回
然后 n ajax 调用 serviceB,每次调用都使用 callA 返回的列表中的 Id
等到所有 serviceB 调用都返回
然后是对 serviceC 的最终 ajax 调用
我正在尝试使用延迟的 JQuery 来实现以下场景,但运气不佳。
您将使用延迟 API 的哪些部分,以及如何构建调用以实现以下目标:
对 serviceA 的第一个 ajax callA 检索 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
.
可能有一个“更干净”的解决方案,而不是data
在共享范围内使用resolve
,但设置会更困难一些(并且不一定更具可读性)。