Heim > Web-Frontend > js-Tutorial > Was verursacht undefinierte Werte in verketteten Versprechen und wie kann man sie beheben?

Was verursacht undefinierte Werte in verketteten Versprechen und wie kann man sie beheben?

Mary-Kate Olsen
Freigeben: 2024-10-19 22:19:02
Original
728 Leute haben es durchsucht

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

Verkettete Versprechen und der Wert von Undefiniertem

In diesem Fall gibt das verkettete .then() keinen Wert zurück und erstellt keinen neuen Versprechen. Wenn das in doStuff() erstellte äußere Versprechen mit dem Wert n * 10 aufgelöst wird, wird das nachfolgende .then() aufgerufen und das Ergebnis des darin enthaltenen Ausdrucks (Protokollierungsanweisungen und eine mögliche Rückgabeanweisung) in der Konsole protokolliert. Da jedoch von diesem verketteten .then() kein tatsächlicher Wert zurückgegeben wird, erhält das nachfolgende .then(), das in doStuff damit verkettet ist, nichts – daher der undefinierte Wert.

Lösung: Werte oder Versprechen zurückgeben from .then()

Um dieses Problem zu beheben, stellen Sie sicher, dass der .then()-Rückruf einen Wert oder einen anderen Funktionsaufruf zurückgibt, der einen Wert oder ein Versprechen zurückgibt. In diesem modifizierten Beispiel:

<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>
Nach dem Login kopieren

Jetzt empfängt die verkettete .then()-Anweisung den von der vorherigen .then()-Anweisung zurückgegebenen Wert, wodurch das undefinierte Problem behoben wird. Die Ausgabe zeigt den vom vorherigen .then() übergebenen Wert an.

Das obige ist der detaillierte Inhalt vonWas verursacht undefinierte Werte in verketteten Versprechen und wie kann man sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage