Maison >interface Web >js tutoriel >Comment gérer les résultats dépendants dans les chaînes de promesses JavaScript ?

Comment gérer les résultats dépendants dans les chaînes de promesses JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-05 18:01:11865parcourir

How to Manage Dependent Results in JavaScript Promise Chains?

Comment gérer les résultats dépendants dans les chaînes de promesses

Votre question demande comment utiliser les résultats précédents dans une séquence de requêtes HTTP basées sur des promesses. Pour résoudre ce problème, considérons d'abord diverses stratégies de partage de données entre promesses dépendantes. Le choix de la stratégie dépend de votre besoin d'accéder à tous les résultats antérieurs ou seulement au plus récent.

Alimentation des résultats de manière séquentielle

Dans ce modèle, le résultat de chaque La requête est passée en argument à la suivante. Cependant, accéder aux résultats précédents devient difficile.

Attribuer des résultats à une portée supérieure

Vous pouvez également stocker les résultats dans des variables dans une portée supérieure. Cela permet d'accéder à tous les résultats précédents.

Accumulation des résultats dans un objet

Cette approche consiste à créer un objet pour accumuler des résultats. Chaque requête ajoute son résultat à l'objet, rendant ainsi disponibles toutes les données précédentes.

Chaînes de promesses imbriquées

Les promesses imbriquées préservent l'accès aux résultats précédents. Chaque couche successive fournit une portée où tous les résultats antérieurs sont accessibles.

Briser la chaîne avec Promise.all()

Si certaines requêtes peuvent fonctionner indépendamment, vous pouvez utiliser Promise.all() pour attendre leur achèvement. Cela vous permet d'obtenir leurs résultats de manière asynchrone.

Utilisation d'Async/Await dans ES7

Dans ES7, async/await peut simplifier le séquençage des opérations asynchrones. Les résultats sont disponibles dans la même portée, éliminant ainsi le besoin de plusieurs gestionnaires .then().

Application à votre exemple

Dans votre cas spécifique, où une clé API est transmis entre plusieurs requêtes HTTP, vous pouvez :

var r1, r2, r3;
callhttp("172.16.28.200", payload).then(function(result1) {
     r1 = result1.data; // Extract the API key
     return callhttp("172.16.28.200", payload);
}).then(function(result2) {
     r2 = result2.data;
     // r1 contains the API key from the previous request
     return callhttp("172.16.28.200", payload);
}).then(function(result3) {
     r3 = result3.data;
     // r1 and r2 contain the API keys from the previous requests
});

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