Sto provando a caricare un gruppo di dati da un'API asincrona e quando tutti i dati sono caricati voglio attivare un evento che tutti i dati siano caricati. Il problema che sto avendo è che l'API che sto usando limita il numero di oggetti risposta a cinque. E potenzialmente avrei bisogno di recuperare 30-40 oggetti di risposta.Come eseguire il looping delle richieste Ajax all'interno di una frase JQuery When - Then?
Quindi, quello che voglio fare è creare un'istruzione when-then che giri attraverso gli elementi di dati e faccia richiesta per ogni cinque elementi, quindi quando tutti gli elementi sono caricati voglio sparare un evento caricato. Il problema che sto avendo è che l'istruzione when-then sta completando prima del successo della richiesta Ajax.
sul codice che ho provato.
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);
});
La funzione loadJSONToData è fondamentalmente solo una funzione wrapper per un Async $ .ajax.
quindi sì, l'evento viene attivato prima che i dati vengano effettivamente caricati. Anche per qualche ragione se provo a mettere il ciclo giusto nel momento in cui (lo dichiaro tramite un errore di sintassi?
Qualcuno ha qualche consiglio su come potrei fare una serie di richieste Ajax e attendere fino a quando non sono tutti stati precedentemente dell'attivazione di un evento? O una via per risolvere quello che ho attualmente?
Grazie in anticipo per l'aiuto.
Si può anche usare 'if (condition.length <10) {// code per eseguire}'. –
Possibile duplicato di [Cercando di effettuare 2 chiamate Ajax tramite JQuery e quindi anteporre i dati (presi da Freecodecamp Twitch Project)] (http://stackoverflow.com/questions/42425885/trying-to-make-2-ajax- chiamate-via-jquery-e-poi-anteporre-i-dati-presi da) –