Comment puis-je chaîner trois appels asynchrones à l'aide de promesses jQuery et transmettre des données entre eux ?
Lorsque vous traitez trois appels HTTP qui doivent s'exécuter séquentiellement, envisagez d'utiliser les promesses jQuery pour enchaîner les appels et faciliter le transfert de données.
Au départ, tenter d'utiliser des objets différés pour deux fonctions donne une solution partielle. Cependant, étendre cette approche à trois fonctions nécessite une stratégie différente.
Chaîner les appels et transmettre les données
Dans chaque appel, renvoyer l'objet jqXHR généré par $.ajax (). Ces objets adhèrent à l'interface Promise et peuvent être chaînés à l'aide de .then()/.done()/.fail()/.always().
<code class="javascript">function first() { return $.ajax(...); } function second(data, textStatus, jqXHR) { return $.ajax(...); } function third(data, textStatus, jqXHR) { return $.ajax(...); }</code>
Dans la fonction principale, enchaînez les fonctions avec .then() comme suit :
<code class="javascript">function main() { first().then(second).then(third); }</code>
Les arguments data, textStatus et jqXHR transmis aux fonctions suivantes proviennent de l'appel $.ajax() dans la fonction précédente. Cela permet à chaque fonction d'accéder et d'utiliser la sortie de l'appel précédent.
À des fins d'illustration, une démo ci-dessous utilise $.when('foo') au lieu de $.ajax(...) pour fournir un promesse tenue.
<code class="javascript">function main() { $.when('foo').then(second).then(third); }</code>
En enchaînant les promesses et en transmettant les données de cette manière, vous pouvez exécuter les trois appels asynchrones de manière synchrone et efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!