J'ai un tableau de données (arrData) que je boucle autour (10 éléments), en appelant une requête ajax sur chacun. À l'heure actuelle, chaque appel ajax est fait en parallèle. Cela signifie que le serveur reçoit 10 appels en une seule fois et renvoie les données dans l'ordre dans lequel il les calcule. Pour soulager légèrement le serveur, je veux maintenant mettre en file d'attente mes appels. Par conséquent, lorsqu'un ensemble de données est reçu par ajax, il appelle la recherche suivante. Y a-t-il un moyen de faire cela intégré à jquery ou devrais-je pirater ma boucle et ajouter un rappel récursif à chacun?Existe-t-il un moyen de forcer un ensemble d'appels jquery ajax dans une file d'attente?
$.each(arrData, function(k,v) {
$.getJSON(lookupPath,
{ key:k, val:v },
function(data) {
console.log(data); //loopback here?
}
);
});
MISE À JOUR: Je suis allé avec les éléments suivants (comme suggéré par Scott M.) pour y parvenir:
function doLookup() {
if(k < arrData.length) {
var v = arrData[k];
$.getJSON(lookupPath,
{ key:k, val:v },
function(data) {
console.log(data);
k++;
doLookup();
}
);
}
}
var k = 0;
doLookup();
Effectuez-vous un ajax onload? J'ai toujours l'impression que faire ça est une mauvaise chose. Voir: http://stackoverflow.com/questions/834751/isnt-ajax-on-pageload-a-bad-thing Juste parce que vous avez ajax disponible, ne signifie pas nécessairement que vous devriez l'utiliser. –
Non, je fais mon appel ajax sur la soumission de formulaire. L'utilisateur tape le mot, ajax recherche la disponibilité des mots (et 10 phrases similaires) dans la base de données. Le premier résultat est le plus applicable, donc je veux que l'utilisateur puisse agir sur un résultat alors que d'autres sont en train de charger. –