為什麼 Promise 鏈中 .then() 回傳的是 undefined?
Promise 鏈中,.then() 傳回一個新的 Promise 物件。但是,如果 .then() 回呼未明確傳回任何值或 Promise,則產生的 Promise 將解析為未定義。
請考慮以下程式碼:
<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>
在此程式碼中, data 在最後一個 .then() 中未定義,因為第一個 .then() 不傳回任何值。為了解決這個問題,我們可以修改第一個 .then() 以傳回結果值:
<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>
以上是為什麼承諾鏈在某些情況下返回未定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!