jQuery deferred - do I need pipes or chains to achieve this pattern?
You could do like this (more or less pseudocode):
(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); });}());
The callToServiceX
function should return the promise object returned by $.ajax
.
There might be a "cleaner" solution than having data
in a shared scope, with resolve
, but the setup would be a bit more difficult (and not necessarily more readable).