Próbuję załadować kilka danych z interfejsu API Async i po załadowaniu wszystkich danych chcę wywołać zdarzenie, że wszystkie dane są ładowane. Problem w tym, że interfejs API, którego używam, ogranicza liczbę obiektów odpowiedzi do pięciu. I potencjalnie potrzebowałbym pobrać 30-40 obiektów odpowiedzi.Jak przechodzić między żądaniami Ajax wewnątrz JQuery Kiedy - to statystyka?
Co chcę zrobić, to utworzyć instrukcję when - then, która wykonuje pętle przez elementy danych i wysyła żądanie na każde pięć pozycji, a następnie po załadowaniu wszystkich elementów chcę uruchomić załadowane wydarzenie. Problem, który mam, polega na tym, że instrukcja "kiedy-to" 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 w zasadzie tylko funkcją wrapper dla asynchroniczny $ .ajax.
Tak więc zdarzenie jest wyzwalane przed załadowaniem danych. Również z jakiegoś powodu, jeśli spróbuję wstawić pętlę dokładnie w momencie (wypowiedzenia przez błąd składni?
Czy ktoś ma jakieś porady, w jaki sposób mogę zrobić kilka żądań Ajax i czekać, aż wszystkie zostaną compeleted przed aktywowaniem zdarzenia? Albo z dala, aby naprawić to, co obecnie mam?
z góry dziękuję za pomoc.
Możesz także użyć 'if (condition.length <10) {// kod do wykonania}'. –
Możliwy duplikat [próby wykonania 2 wywołań Ajax za pośrednictwem JQuery, a następnie przygotowanie danych (pobranych z projektu Freecodecamp Twitch)] (http://stackoverflow.com/questions/42425885/trying-to-make-2-ajax- call-via-jquery-a-then-prepending-the-data-from) –