Maison  >  Article  >  interface Web  >  Quelles sont les causes des valeurs non définies dans les promesses chaînées et comment y remédier ?

Quelles sont les causes des valeurs non définies dans les promesses chaînées et comment y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-19 22:19:02592parcourir

What Causes Undefined Values in Chained Promises and How to Fix Them?

Promesses enchaînées et valeur non définie

Dans ce cas, le .then() enchaîné ne renvoie aucune valeur ni ne crée un nouveau Promesse. Lorsque la promesse externe créée dans doStuff() est résolue avec la valeur n * 10, le .then() suivant est invoqué et le résultat de l'expression qu'il contient (instructions de journalisation et instruction return potentielle) est enregistré dans la console. Cependant, comme aucune valeur réelle n'est renvoyée par ce .then() chaîné, le .then() suivant qui lui est chaîné dans doStuff ne reçoit rien, d'où la valeur non définie.

Solution : renvoyer des valeurs ou des promesses. from .then()

Pour résoudre ce problème, assurez-vous que le rappel .then() renvoie une valeur ou un autre appel de fonction qui renvoie une valeur ou une promesse. Dans cet exemple modifié :

<code class="js">const doStuff = (n /* `n` is expected to be a positive number */) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(n * 10);
    }, Math.floor(Math.random() * 1000));
  })
    .then((result) => {
      if (result > 100) {
        console.log(`${result} is greater than 100`);
      } else {
        console.log(`${result} is not greater than 100`);
      }
      // Return `result` to pass it to the next `.then()`
      return result;
    });
};

doStuff(9)
  .then((data) => {
    console.log("data is: " + data);
  });</code>

Maintenant, le .then() chaîné reçoit la valeur renvoyée par le .then() précédent, éliminant ainsi le problème non défini. La sortie affichera la valeur transmise du précédent .then().

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