Heim  >  Artikel  >  Web-Frontend  >  Wie vermeide ich undefinierte Werte beim Verketten von .then() mit Versprechen?

Wie vermeide ich undefinierte Werte beim Verketten von .then() mit Versprechen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-19 22:18:29264Durchsuche

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

.then() mit Versprechen verketten: Undefinierte Werte vermeiden

Beim Verketten mehrerer .then()-Methoden mit einem Versprechen ist es wichtig, Folgendes zu beachten Geben Sie von jedem .then()-Handler einen Wert oder ein Versprechen zurück, um zu vermeiden, dass bei nachfolgenden .then()-Aufrufen auf undefinierte Werte gestoßen wird.

In Ihrem Beispiel:

<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>

Das Problem hier ist, dass die Der erste .then()-Handler gibt keinen Wert oder Versprechen zurück. Wenn der zweite .then()-Handler aufgerufen wird, hat er daher nichts, mit dem er arbeiten kann.

Um dies zu beheben, geben Sie einfach das Ergebnis des ersten .then()-Handlers zurück:

<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>

Jetzt empfängt der zweite .then()-Handler das Ergebnis vom ersten Handler als Datenparameter und ist nicht undefiniert.

Das obige ist der detaillierte Inhalt vonWie vermeide ich undefinierte Werte beim Verketten von .then() mit Versprechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn