問題:非同步函數是否隱式回傳 Promise?
在 JavaScript 中,非同步函數是使用 async 關鍵字聲明的,並且通常被認為會自動傳回回報承諾。但是,這會引發潛在的不一致:當明確傳回非 Promise 值時,該函數似乎將該值包裝在 Promise 中。
答案:所有非同步函數都會回傳 Promises
觀察到的行為是正確的:所有非同步函數都隱含回傳 Promise。具體來說:
範例:
async function increment(num) { return num + 1; } // Logs 4, as the returned promise resolves to 4. increment(3).then(num => console.log(num));
包裹行為:
這個包裝行為是生成器函數所獨用器有的。例如,生成器函數也會傳回 Promise,但方式不同:
function* foo() { return 'test'; } // Logs an object, not "test". console.log(foo()); // Logs 'test' by explicitly calling .next() on the generator function. console.log(foo().next().value);
以上是非同步函數總是回傳 Promise 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!