У меня есть переменное количество URL-адресов, которые я хочу сделать $.ajax(urlx), и я не вижу примеров того, как передать это $.when. Это не похоже на то, что .when принимает массив, просто список параметров.
Как я могу заставить это работать?
var picturesArray = [];
var urlCount = 2;
$.when(
$.ajax(urls[0]),
$.ajax(urls[1])
).done(function() {
var cntx;
for (cntx = 0; cntx < urlCount; cntx++) {
picturesArray.push(arguments[cntx][0]);
}
});
кто исчез предыдущий ответ и обсуждение этого ответа? Не знал, что может случиться в SO
Я удалил свой собственный ответ, так как он не дает правильного решения.
Странно, я думал, что если у него есть комментарии, их нельзя будет удалить. Думаю, я был неправ.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я наконец-то заработал. Ответ таков, хотя и с некоторыми дополнительными подробностями.
var requests = [];
for (i = 0; i < urls.length; i++) {
requests.push(
$.ajax({
urlIndex: i,
url: urls[i],
success: function(data, textStatus) {
jsonResult[this.urlIndex] = {
data: data,
status: textStatus,
error: "",
viewed: false
};
console.info("success:" + new Date().getMilliseconds());
},
error: function(jqXHR, textStatus, errorThrown) {
jsonResult[this.urlIndex] = {
data: {},
status: textStatus,
error: errorThrown,
viewed: false
};
console.info("error:" + new Date().getMilliseconds());
}
})
);
}
$.when.apply(undefined, requests).then(
function() {
callback();
},
function() {
callback();
}
);
посмотрите, поможет ли это: stackoverflow.com/a/14352218/9386929