Maison >interface Web >js tutoriel >Comment puis-je accéder aux résultats de promesses intermédiaires dans une chaîne JavaScript `.then()` ?

Comment puis-je accéder aux résultats de promesses intermédiaires dans une chaîne JavaScript `.then()` ?

DDD
DDDoriginal
2024-12-26 00:08:09205parcourir

How Can I Access Intermediate Promise Results in a JavaScript `.then()` Chain?

Accès aux résultats de promesses intermédiaires dans une chaîne .then()

Les promesses offrent un moyen pratique de gérer les opérations asynchrones dans votre code. Cependant, vous pouvez parfois rencontrer un scénario dans lequel vous devez accéder aux résultats de promesses intermédiaires au sein d'une chaîne .then().

Le défi

Considérez la chaîne de promesses suivante :

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Some processing
        return promiseB(…);
    }).then(function(resultB) {
        // More processing
        return // How do I gain access to resultA here?
    });
}

Dans cette chaîne, le résultat de promiseA() n'est pas accessible dans le rappel .then() pour promiseB(). Cela peut poser un problème si vous devez utiliser les deux résultats dans votre calcul final.

Briser la chaîne

Pour surmonter cette limitation, vous pouvez briser la chaîne en plusieurs morceaux et utilisez les combinateurs de promesses fournis par votre bibliothèque. Considérez la refactorisation suivante :

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // some processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // more processing
        return // something using both resultA and resultB
    });
}

Cette approche utilise Promise.all pour attendre que les deux promesses soient résolues avant de transmettre les résultats au rappel final .then().

Autre Options

  • Déstructuration : ES6 permet de déstructurer le tableau renvoyé par Promise.all en variables individuelles.
  • Opérateur de propagation : ES6 prend également en charge l'opérateur de propagation, qui peut être utilisé pour répartir les éléments du tableau dans les arguments de rappel.
  • Méthode de jointure (Bluebird) : Bluebird fournit une fonction de jointure dédiée qui simplifie la combinaison de plusieurs promesses en une seule. résultat.

En brisant votre chaîne et en utilisant ces alternatives, vous pouvez facilement accéder aux résultats de promesses intermédiaires et maintenir une structure de code claire et modulaire.

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