Maison  >  Article  >  interface Web  >  Comment chaîner des appels asynchrones et transmettre des données entre eux avec les promesses jQuery ?

Comment chaîner des appels asynchrones et transmettre des données entre eux avec les promesses jQuery ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 14:52:02553parcourir

How to Chain Asynchronous Calls and Pass Data Between Them with jQuery Promises?

Chaînage d'appels asynchrones avec des promesses jQuery

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn