Jak zapętlić żądania Ajax wewnątrz JQuery Kiedy - Następnie statystyka?
Próbuję załadować kilka danych z asynchronicznego interfejsu API i po załadowaniu wszystkich danych chcę wyzwolić zdarzenie, które załaduje wszystkie dane. Mam problem z tym, że interfejs API, którego używam, ogranicza liczbę obiektów odpowiedzi do pięciu. Potencjalnie musiałbym pobrać 30–40 obiektów odpowiedzi.
Chcę więc utworzyć instrukcję when - then, która zapętli elementy danych i zażąda co pięć elementów, a następnie po załadowaniu wszystkich elementów chcę uruchomić załadowane zdarzenie. Problem, który mam, polega na tym, że instrukcja when-then kończy się przed sukcesem żądania ajax.
na kod, który próbowałem.
function loadsLotsOfStats(stats, dataType, eventName, dataName, callback) {
var groupedStats = [];
while (stats.length > 0) {
groupedStats.push(stats.splice(0, 5).join('/'));
}
j$.when(
groupedStats.forEach(function (d) {
loadJSONToData(model.apiUrl.replace("{IDS}", d), "json", "", dataName, function (d) { /*console.log(d);*/ }, true)
})
).then(function () {
j$(eventSource).trigger('dataLoaded', eventName);
});
Funkcja loadJSONToData jest po prostu funkcją opakowującą dla Async $ .ajax.
więc tak, zdarzenie jest wyzwalane przed załadowaniem danych. Również z jakiegoś powodu, jeśli próbuję wprowadzić pętlę bezpośrednio w momencie (oświadczenie to przez błąd składniowy?
Czy ktoś ma jakąkolwiek radę, w jaki sposób mogę wykonać kilka żądań Ajax i poczekać, aż wszystkie zostaną skompilowane przed wywołaniem zdarzenia? Albo daleko, aby naprawić to, co mam obecnie?
Z góry dziękuję za pomoc.