jQuery Ajax Call Chaining mit mehreren Abhängigkeiten

Ich verstehe Magie nicht ganz aufgeschoben Objekte mit jQuery. Nehmen Sie den folgenden Code an:

function callWebService(uri, filter, callback)
{
  var data = {};

  if (filter && filter != '')
    data['$filter'] = filter;

  jQuery.ajax({
    url: '/_api/lists/' + uri + '/items',
    data: data,
    success: callback,
    dataType: 'json'
  });
}

function getInitialData() {
  callWebService("InitialData", "", function (data) {
    //do stuff with data
  });
}

function getGreenData() {
  callWebService("GreenData", "filter from InitialData", function (data) {
    //do stuff with data
  });
}

function getRedData() {
  callWebService("RedData", "filter from InitialData", function (data) {
    //do stuff with data
  });
}

function getFinalData() {
  callWebService("FinalData", "filter from RedData & GreenData", function (data) {
    //do stuff with data
  });
}

Die Reihenfolge, in der ich Dinge tun möchte, ist wie folgt: Am Ende werde ich vier Webservices aufrufen, während die Aufrufe voneinander abhängen (eine lange Kette):

AnrufgetInitialDataAnrufgetGreenData mit Abhängigkeit vongetInitialDataAnrufgetRedData mit Abhängigkeit vongetInitialDataAnrufgetFinalData mit Abhängigkeiten vongetGreenData undgetRedData

As können Sie sagen, 2 & 3 könnte gleichzeitig passieren. Ich denke, ich kann @ verwendjQuery.when() (oderresolve?), Ich weiß nur nicht, wie ich es hier anwenden soll. Ich denke, ich muss die Funktionen überarbeiten, um immer das Ajax-Objekt zurückzugeben?

Pseude-Code würde so aussehen:

getInitialData().then(getGreenData, getRedData).then(getFinalData)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage