非同步函數中Promise 的隱式回傳
與非同步函數直接傳回await表達式的值的假設相反,它們實際上總是返回一個承諾。如果不存在明確 return 語句,則要傳回的值將自動包裝在 Promise 中。這適用於所有返回值,包括非承諾。
例如:
async function increment(num) { return num + 1; } increment(3).then(num => console.log(num)); // Logs 4
在這種情況下,即使返回一個數字,它仍然是封裝在一個承諾中。當透過 then() 方法存取傳回值時,這一點很明顯。
其他情況:
異常:
當從非同步函數中明確傳回Promise 時,會發生此規則的異常。在這種情況下,promise 不會被重新包裝。
範例:
async function increment(num) { return new Promise(resolve => resolve(num + 1)); } increment(3).then(num => console.log(num)); // Logs 4
結論:
而這種行為可能會偏離傳統的Java return 語句,它與ES6 中生成器的概念一致,而ES6 中的生成器並未傳回準確的值作為回傳語句。
以上是即使沒有明確返回,非同步函數是否始終返回 Promise?的詳細內容。更多資訊請關注PHP中文網其他相關文章!