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):
AnrufgetInitialData
AnrufgetGreenData
mit Abhängigkeit vongetInitialData
AnrufgetRedData
mit Abhängigkeit vongetInitialData
AnrufgetFinalData
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)