Maison > interface Web > js tutoriel > 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
Libérer: 2024-10-19 22:19:02
original
728 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php
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