Это то, чего я пытаюсь достичь,
У меня есть отсортированный массив, который я передаю в jQuery каждый. Внутри каждого есть вызов ajax, который доставит мне нужные данные и каждый раз вставит в другой массив (давайте назовем его allJsonData). Наконец я показываю allJsonData. Проблема в том, что всякий раз, когда я отображаю allJsonData, элементы всегда отображаются непоследовательно (не в алфавитном/случайном порядке). Я ожидаю, что allJsonData будет отображаться в алфавитном порядке (сначала данные AList, затем данные BList, третьи данные CList и т. д.). Я новичок в jQuery deferred и promise. Заранее спасибо.
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-ЗВОНОК****/
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();
},