Maison > interface Web > js tutoriel > Comment éviter les valeurs non définies lors du chaînage de .then() à des promesses ?

Comment éviter les valeurs non définies lors du chaînage de .then() à des promesses ?

Linda Hamilton
Libérer: 2024-10-19 22:18:29
original
379 Les gens l'ont consulté

How to Avoid Undefined Values When Chaining .then() to Promises?

Chaînage de .then() à des promesses : éviter les valeurs non définies

Lorsque vous enchaînez plusieurs méthodes .then() à une promesse, il est important de renvoie une valeur ou une promesse de chaque gestionnaire .then() pour éviter de rencontrer des valeurs non définies lors des appels .then() ultérieurs.

Dans votre exemple :

<code class="javascript">function doStuff(n) {
  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");
    }
  });
}

doStuff(9)
.then((data) => {
  console.log(data); // undefined
});</code>
Copier après la connexion

Le problème ici est que le Le premier gestionnaire .then() ne renvoie aucune valeur ni promesse. Par conséquent, lorsque le deuxième gestionnaire .then() est appelé, il n'a rien avec lequel travailler.

Pour résoudre ce problème, renvoyez simplement le résultat du premier gestionnaire .then() :

<code class="javascript">function doStuff(n) {
  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; // return the result to avoid undefined at next .then()
  });
}

doStuff(9)
.then((data) => {
  console.log("data is: " + data); // data is not undefined
});</code>
Copier après la connexion

Maintenant, le deuxième gestionnaire .then() recevra le résultat du premier gestionnaire comme paramètre de données, et il ne sera pas indéfini.

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