非同步函數:了解傳回值和 Promise
雖然非同步函數允許您以同步風格編寫程式碼,但它們本質上傳回 Promise。這可能會導致程式碼傳回值的混亂。
Promises:快速概述
Promises 是表示非同步操作最終完成或失敗的物件。它們提供了兩個關鍵方法:
非同步函數和 Promise
非同步函數總是會傳回一個 Promise,即使您沒有明確使用 wait 關鍵字。這個承諾代表了非同步操作的結果。如果函數拋出錯誤,則 Promise 將拒絕該錯誤。
用法:
使用回調函數的Promise:
<code class="javascript">const myAsyncFunction = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('Asynchronous value'); }, 1000); }); }; myAsyncFunction() .then(result => { console.log(`Callback Result: ${result}`); }) .catch(error => { console.log(`Error: ${error}`); });</code>
<code class="javascript">async function myAsyncFunction() { const result = await new Promise((resolve, reject) => { setTimeout(() => { resolve('Asynchronous value'); }, 1000); }); return result; } myAsyncFunction() .then(result => { console.log(`Await Result: ${result}`); }) .catch(error => { console.log(`Error: ${error}`); });</code>
在這些範例中,myAsyncFunction 傳回一個Promise,該Promise 在1 秒延遲後解析為值「非同步值」 。 then 和 catch 方法分別處理已解決或已拒絕狀態。
返回Promise
<code class="javascript">const myAsyncFunction = () => { return new Promise(...); };</code>
如果您想要返回Promise 本身而不做任何修改,您可以簡單地write:
傳回修改後的值
<code class="javascript">async function myAsyncFunction() { const result = await new Promise(...); return result.toUpperCase(); }</code>
要從非同步函數傳回修改後的值,您需要在then 方法中處理Promise 結果並傳回修改後的值。例如:
此函數傳回一個使用結果的大寫版本解析的 Promise。以上是非同步函數的傳回值是什麼以及它們與 Promise 有何關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!