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

Comment puis-je accéder aux résultats de promesses intermédiaires dans les chaînes de promesses JavaScript ?

Barbara Streisand
Libérer: 2024-12-24 06:39:17
original
217 Les gens l'ont consulté

How Can I Access Intermediate Promise Results in JavaScript Promise Chains?

Gérer les résultats intermédiaires dans les chaînes de promesses

Problème :

Lors de la création de chaînes de promesses, il Il peut être difficile d'accéder aux résultats des promesses intermédiaires lors du rappel final. Dans l'exemple suivant, comment pouvons-nous accéder au résultat de promiseA dans le rappel de promiseB ?

function getExample() {
    return promiseA(…).then(function(resultA) {
        // Processing
        return promiseB(…);
    }).then(function(resultB) {
        // How can we access resultA here?
    });
}
Copier après la connexion

Solution : briser la chaîne

Pour accéder aux résultats intermédiaires dans la chaîne de promesses, il est préférable de diviser la chaîne en composants distincts. Cela vous permet d'attacher plusieurs rappels à la même promesse, en accédant à la valeur résolue en cas de besoin. Voici une version améliorée du code :

function getExample() {
    var a = promiseA(…);
    var b = a.then(function(resultA) {
        // Processing
        return promiseB(…);
    });
    return Promise.all([a, b]).then(function([resultA, resultB]) {
        // Processing using both resultA and resultB
        return …;
    });
}
Copier après la connexion

Cette approche utilise la méthode Promise.all() pour créer un tableau de toutes les promesses de la chaîne. Nous enchaînons ensuite un autre rappel then() au résultat Promise.all(), en passant une fonction qui reçoit un tableau des valeurs résolues. Cela nous permet d'accéder facilement à resultA et resultB dans le rappel final.

Solutions alternatives :

Dans ES5, vous pouvez utiliser la méthode .spread() pour obtenir fonctionnalité similaire :

…
return Promise.all([a, b]).then(.spread(function(resultA, resultB) { … });
Copier après la connexion

Bluebird fournit une méthode join() dédiée qui simplifie ce processus plus loin :

…
return Promise.join(a, b, function(resultA, resultB) { … });
Copier après la connexion

En brisant la chaîne et en utilisant les combinateurs de promesses appropriés, vous pouvez accéder et manipuler avec élégance les résultats de promesses intermédiaires, garantissant ainsi une structure de code claire 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal