Maison >interface Web >js tutoriel >Comment puis-je accéder aux résultats de promesses intermédiaires dans une chaîne de promesses plates ?

Comment puis-je accéder aux résultats de promesses intermédiaires dans une chaîne de promesses plates ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-29 15:33:11518parcourir

How Can I Access Intermediate Promise Results in a Flat Promise Chain?

Accès aux résultats de promesses intermédiaires dans une chaîne de promesses plates

Afin de récupérer les résultats de promesses intermédiaires au sein d'une chaîne de promesses plates, il est nécessaire de diviser la chaîne en plusieurs segments.

Promise Combinators

Au lieu de s'appuyer sur le paramètre d'un seul rappel pour obtenir des valeurs intermédiaires, il Il est recommandé d'utiliser des combinateurs de promesses pour créer la valeur composite souhaitée. Cette approche garantit un flux de contrôle clair et structuré, rendant la modularisation simple.

Exemple

Considérez l'exemple suivant :

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
    });
}

Dans cet exemple, le combinateur de promesses Promise. all est utilisé pour agréger les résultats de a et b. Le rappel qui suit Promise.all peut alors accéder et utiliser à la fois resultA et resultB pour construire la valeur composite.

Méthodes d'assistance

Les bibliothèques comme Q, Bluebird et when fournissent des méthodes d'assistance telles que . se propager pour simplifier le traitement des résultats de promesses multiples dans ES5.

…
return Promise.all([a, b]).then(function(results) {
    results.spread(function(resultA, resultB) { … });
});

Promise.join

Bluebird propose une fonction Promise.join dédiée comme alternative plus efficace à la combinaison Promise.all et .spread.

…
return Promise.join(a, b, function(resultA, resultB) { … });

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