Heim > Web-Frontend > js-Tutorial > Warum führt eine Verkettung von Versprechen ohne Rückgabe eines Werts zu undefinierten Werten?

Warum führt eine Verkettung von Versprechen ohne Rückgabe eines Werts zu undefinierten Werten?

Mary-Kate Olsen
Freigeben: 2024-10-19 22:13:29
Original
711 Leute haben es durchsucht

Why Do Promises Chain Without Returning a Value Result in Undefined Values?

Den undefinierten Wert in verketteten Versprechen verstehen

In JavaScript werden Versprechen für asynchrone Vorgänge verwendet. Sie bieten eine Möglichkeit, mit den Ergebnissen von Berechnungen umzugehen und Szenarien wie Erfolg und Misserfolg zu bewältigen. Manchmal stoßen wir jedoch beim Verketten von Versprechen auf einen unerwarteten Wert von undefiniert.

Grundursache: Verketten ohne Rückgabewert

Versprechen werden mit der Methode .then() verkettet. Wenn ein Promise aufgelöst oder abgelehnt wird, gibt die Methode .then() ein neues Promise-Objekt zurück. Wenn jedoch kein Wert oder Promise explizit von der .then()-Methode zurückgegeben wird, wird das neue Promise-Objekt mit dem Standardwert undefiniert aufgelöst.

Beispiel:

<code class="javascript">doStuff(9)
  .then(function(result) {
    // No value or Promise returned
    if (result > 100) {
      console.log(result + " is greater than 100");
    } else {
      console.log(result + " is not greater than 100");
    }
  })
  .then(function(data) {
    console.log(data); // Output: undefined
  });</code>
Nach dem Login kopieren

In diesem Beispiel gibt die erste .then()-Methode keinen Wert zurück. Als Ergebnis erhält die zweite .then()-Methode undefiniert als Argument, das dann auf der Konsole ausgegeben wird.

Lösung: Einen Wert oder ein Versprechen zurückgeben

Um undefinierte Werte in verketteten Versprechen zu vermeiden, muss ein Wert oder ein Versprechen, das einen Wert zurückgibt, explizit von der .then()-Methode zurückgegeben werden.

Beispiel:

<code class="javascript">doStuff(9)
  .then(function(result) {
    if (result > 100) {
      console.log(result + " is greater than 100");
    } else {
      console.log(result + " is not greater than 100");
    }
    // Return the result to avoid undefined at the next .then()
    return result;
  })
  .then(function(data) {
    console.log("data is: " + data); // Output: "data is: 90"
  });</code>
Nach dem Login kopieren

Durch die Rückgabe des Ergebnisses erhält die zweite .then()-Methode den tatsächlichen Ergebniswert statt undefiniert.

Das obige ist der detaillierte Inhalt vonWarum führt eine Verkettung von Versprechen ohne Rückgabe eines Werts zu undefinierten Werten?. 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