首頁  >  文章  >  web前端  >  為什麼在 JavaScript 中選擇「return wait Promise」而不是「return Promise」?

為什麼在 JavaScript 中選擇「return wait Promise」而不是「return Promise」?

Susan Sarandon
Susan Sarandon原創
2024-11-18 07:57:02178瀏覽

Why Choose `return await promise` over `return promise` in JavaScript?

JavaScript 中的返回等待承諾與返回承諾:行為差異

何時在JavaScript 中使用非同步程式碼時,開發人員經常使用async/await 機制來管理Promise。但是,在非同步函數中傳回 Promise 時需要考慮兩種變體:返回等待承諾和返回承諾。本文深入探討了這些方法之間的細微差別。

行為差異

async function rejectionWithReturnAwait() {
  try {
    return await Promise.reject(new Error());
  } catch (e) {
    return 'Saved!';
  }
}

在大多數情況下,returnawaitpromise 和 returnpromise 之間沒有明顯的區別。兩者都會產生一個解決或拒絕的 Promise,提供相同的可觀察行為。

async function rejectionWithReturn() {
  try {
    return Promise.reject(new Error());
  } catch (e) {
    return 'Saved!';
  }
}
但是,在使用 try-catch 區塊時,差異變得明顯。考慮這個例子:

在這種情況下,return wait 確保被拒絕的 Promise 在非同步函數中被捕獲,允許執行 catch 子句並返回解析為「已儲存!」的 Promise。

相較之下,return Promise 直接傳回被拒絕的 Promise,而無需在非同步函數中等待它。這意味著 catch 子句不會捕捉拒絕,而是呼叫者會收到拒絕。

意思return wait Promise 和 return Promise 之間的選擇取決於關於所需的行為。如果非同步函數中的錯誤處理至關重要,則應使用 returnawaitpromise 來確保捕獲錯誤並進行相應的處理。否則,可以使用返回承諾來避免不必要的嵌套來優化效能。

以上是為什麼在 JavaScript 中選擇「return wait Promise」而不是「return Promise」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn