jQuery deferred - do I need pipes or chains to achieve this pattern? jQuery deferred - do I need pipes or chains to achieve this pattern? ajax ajax

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).