Heim >Web-Frontend >js-Tutorial >Wie vermeide ich undefinierte Werte beim Verketten von .then() mit Versprechen?
.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!