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