首頁 > web前端 > js教程 > JavaScript 中的 async/await 是否總是回傳 Promise,為什麼?

JavaScript 中的 async/await 是否總是回傳 Promise,為什麼?

Barbara Streisand
發布: 2024-12-12 11:54:10
原創
809 人瀏覽過

Does async/await in JavaScript Always Return a Promise, and Why?

async/await:Promise 揭曉

Promise 是 JavaScript 中非同步程式設計的基本面向。當涉及 async/await 時,重要的是要揭開非同步函數總是傳回 Promise 的概念。

await 關鍵字放置在返回 Promise 的函數呼叫之前,會暫停當前函數的執行,直到Promise 要么被解決,要么被拒絕。然而,這次暫停並沒有解除承諾。 Promise 的結果仍然封裝在傳回的 Promise 物件中。

為了說明這一點,請考慮以下模擬非同步請求的程式碼:

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar' }), 2000)
  ));

  const json = await request();
  return json;
};
登入後複製

呼叫 getJSON() 時,它會傳回a Promise,因為await語句只是暫停執行直到請求完成:

console.log(getJSON()); // returns Promise
登入後複製

相反,當連結.then(),Promise的結果終於暴露了:

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }
登入後複製

為什麼不能用console .log(getJSON())繞過Promise包裝?這是 Promise 的基本屬性。 Promise 代表非同步操作,在解決或拒絕之前,它們的結果是未知的。有意禁止對結果的外部訪問,以確保 Promise 仍然是結果的唯一中介。

請記住,async/await 透過在遇到 Promise 時暫停執行來使使用 Promise 變得更加方便,但它並沒有無需解開 Promise 來訪問其結果。

以上是JavaScript 中的 async/await 是否總是回傳 Promise,為什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板