Heim >Web-Frontend >js-Tutorial >Warum gibt Promise Chaining in manchen Fällen undefiniert zurück?
Warum wird von .then() bei der Promise-Verkettung undefiniert zurückgegeben?
Bei der Promise-Verkettung gibt .then() ein neues Promise-Objekt zurück . Wenn jedoch vom .then()-Rückruf explizit kein Wert oder Promise zurückgegeben wird, wird das resultierende Promise in undefiniert aufgelöst.
Bedenken Sie den folgenden Code:
<code class="js">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>
In diesem Code Die Daten sind in der letzten .then()-Anweisung undefiniert, da die erste .then()-Anweisung keinen Wert zurückgibt. Um dies zu beheben, können wir das erste .then() so ändern, dass es den Ergebniswert zurückgibt:
<code class="js">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 result to avoid undefined }); } doStuff(9) .then(data => { console.log("data is: " + data); // data is no longer undefined });</code>
Das obige ist der detaillierte Inhalt vonWarum gibt Promise Chaining in manchen Fällen undefiniert zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!