Maison >interface Web >js tutoriel >Comment puis-je accéder aux résultats des promesses précédentes dans une chaîne JavaScript .then() ?

Comment puis-je accéder aux résultats des promesses précédentes dans une chaîne JavaScript .then() ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-27 14:59:101027parcourir

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

Accès aux résultats des promesses précédentes dans une chaîne .then()

Dans le but de structurer le code à l'aide de promesses, une "chaîne de promesses plates" comprenant plusieurs rappels .then() peuvent être créés. Cependant, accéder aux résultats de promesses intermédiaires au sein de cette chaîne peut être difficile car ils ne sont généralement pas susceptibles de rappels ultérieurs.

Briser la chaîne

Pour accéder aux valeurs intermédiaires, considérez briser la chaîne en petits morceaux. Au lieu d'attacher un seul rappel et d'essayer d'utiliser son paramètre à plusieurs reprises, attachez plusieurs rappels à la même promesse où chaque valeur de résultat est requise. En incorporant les combinateurs de promesses fournis par la bibliothèque, la valeur du résultat peut être construite.

Cette approche simplifie le flux de contrôle, améliore la composition et facilite la modularisation.

Exemple de code modifié :

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

Alternative ES5 :

…
return a.then(function(resultA) {
  return b.then(function(resultB) {
    // more processing
    return // something using both resultA and resultB
  });
});

Bluebird solution :

…
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
Article précédent:Test Dev.toArticle suivant:Test Dev.to