非同步函數與隱式 Promise 傳回
在 JavaScript 中,由 async 關鍵字標記的非同步函數傳回 Promise。即使您明確傳回非 Promise 值或根本不回傳任何內容,這也成立。
隱式 Promise 包裝器
如果您不明確回傳Promise,你回傳的值會自動包裹在一個promise中。
async function increment(num) { return num + 1; } // Logs: 4 increment(3).then(num => console.log(num));
這表示即使傳回值是一個數字,出於非同步處理的目的,它將被轉換為 Promise。
Unwrapped Promises
Promises 自動解包,這表示如果您確實返回在非同步函數中承諾某個值時,您將收到該值的承諾(而非針對該值的承諾)
async function increment(num) { return defer(() => num + 1); } // Logs: 4 increment(3).then(num => console.log(num));
不一致的行為
非同步函數的行為確實看起來與傳統的return 語句不一致,因為它在明確傳回非承諾值時有所不同。這是因為非同步函數使用稱為生成器的特殊函數,它並不總是傳回與 return 語句相同的值。
以上是非同步 JavaScript 函數總是回傳 Promise 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!