あなたはこのようにすることができます(多かれ少なかれ擬似コード):
(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
。
data
を使用して共有スコープを使用するよりも「クリーンな」ソリューションがあるかもしれませんresolve
が、セットアップは少し難しくなります(必ずしも読みやすくなるとは限りません)。