JavaScript: commande d’appels AJAX

J’ai 3 appels ajax pour une fonctionnalité particulière. Le 3ème appel dépend des 2 premiers appels, c’est-à-dire que pour le 3ème appel, les 2 premiers appels doivent être terminés. Mais les 2 premiers appels AJAX sont indépendants. Je veux donc qu’ils soient asynchrones et s’exécutent en parallèle.

Comment structurer ces appels maintenant? J’ai essayé de les mettre dans un bloc de succès nested d’appels respectifs, mais les deux premiers appels ne sont pas indépendants.

Veuillez suggérer avec un code sudo, si possible.

Utilisez les promesses et $.when :

 $.when(ajaxCall1(), ajaxCall2()).then(ajaxCall3); 

ajaxCallX est quelque chose comme

 function ajaxCall1() { return $.ajax(...); } 

Cela signifie essentiellement “après que les deux promesses d’ ajaxCall1 et d’ ajaxCall2 soient résolues, exécutez la fonction ajaxCall3 “.

Cela fonctionne car l’object renvoyé par $.ajax (et des méthodes similaires) implémente l’interface de promesse. Plus d’informations peuvent également être trouvées dans la documentation $.ajax .


Les réponses de chaque appel Ajax sont transmises au rappel then sous forme d’arguments. Vous pouvez les accéder comme

 $.when(ajaxCall1(), ajaxCall2()).then(function(a1, a2) { // a1[0] is the response of the first call // a2[0] is the response of the second call ajaxCall3(a1[0], a2[0]); }); 

Regardez la documentation $.when pour un autre exemple.

Vous pouvez utiliser ajaxComplete pour appeler le troisième événement une fois l’exécution des deux premiers événements terminée. ajaxComplete est un événement de rappel qui est déclenché après chaque réponse ajaxCalls. Regardez ce lien pour voir comment ça marche https://api.jquery.com/ajaxComplete/