Das ist, was ich zu erreichen versuche,mit jQuery abgegrenzt und versprechen Looping
ich ein sortiertes Array haben, die ich je auf jQuery übergeben. In jedem gibt es einen Ajax-Aufruf, der mir die gewünschten Daten holt und jedes Mal, wenn ich in ein anderes Array stoße (lasst es alle jsonData nennen). Schließlich zeige ich allJsonData an. Problem ist, wenn ich alleJsonData anzeigen, Elemente werden immer inkonsistent angezeigt (nicht alphabetisch/zufällige Reihenfolge). Ich erwarte, dass alle jsonData alphabetisch angezeigt werden (dh AList-Daten zuerst, BList-Daten zweite, CList-Daten dritte usw.). Ich bin neu zu jQuery aufgeschoben und versprechen. Danke im Voraus.
var sortedArray = [AList, BList, CList, DList];
var promises = [];
var allJsonData = [];
$.each(sortedArray, function (index, value) {
var dfd = $.Deferred();
var url = _spPageContextInfo.webAbsoluteUrl + ('/_api/Web/Lists/GetByTitle(' + "'" + value + "'" + ')/Items? + "SomeFilterParameters";
//AJAX CALL HERE//
.done(
function (approvedListItems) {
if (approvedListItems.d.results.length != 0) {
$.each(approvedListItems.d.results, function (i, col) {
allJsonData.push(col);//Push into master array
});
}//If closed
dfd.resolve(allJsonData);
}
);//Done closed
promises.push(dfd);
});//jQuery Each closed
return $.when.apply($, promises).promise();
/**** Ajax-Aufruf ****/
getListItems: function(url) {
var dfd = $.Deferred();
$.ajax({
url: url,
type: "GET",
headers: {
"accept": "application/json;odata=verbose",
},
success: function (data) {
dfd.resolve(data);
},
error: function (error) {
dfd.reject(sender, args, "Error retrieving items");
}
});
return dfd.promise();
},
Ajax-Aufrufe sind async.hence die erste, die zuerst aufgerufen wird, kann längere Zeit dauern, während die dritte Anfrage abgeschlossen ist und auf Array geschoben ... daher die Unregelmäßigkeit in der Reihenfolge der Array ...... –
Sie könnten sortiere einfach die allJsonData im done –
Bitte zeig uns den aktuellen Ajax-Aufruf. Um Ihnen die beste Antwort zu bieten, müssen wir auch diesen Teil des Codes sehen. – jfriend00