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
Barbara Streisandoriginal
2024-12-24 06:39:17220parcourir

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

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

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

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

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

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!

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
Article précédent:Appel cloudArticle suivant:Appel cloud