首頁 >web前端 >js教程 >如何在 JavaScript 中使用「async」和「await」進行流暢的非同步程式設計?

如何在 JavaScript 中使用「async」和「await」進行流暢的非同步程式設計?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-19 22:38:29580瀏覽

How to Use 'async' and 'await' for Smooth Asynchronous Programming in JavaScript?

JavaScript 中帶有「async」和「await」的非同步函數

非同步程式設計在 JavaScript 模型中至關重要。當非同步操作完成時,隨後執行附加程式碼是很常見的。以前,回調被用於此目的。然而,嵌套回調可能會導致“回調地獄”。

Promises

Promise 改善了與嵌套回呼相關的問題。它們透過「承諾鏈」實現鏈接,從而提供更清晰的語法和錯誤處理。例如:

<code class="javascript">const randomProm = new Promise((resolve, reject) => {
  if (Math.random() > 0.5) {
    resolve('Succes');
  } else {
    reject('Failure');
  }
});

// Promise chain
randomProm
  .then((value) => {
    console.log('inside then1');
    console.log(value);
    return value;
  })
  .then((value) => {
    console.log('inside then2');
    console.log(value);
    return value;
  })
  .catch((value) => {
    console.log('inside catch');
    console.log(value);
  });</code>

'async' 和 'await' 關鍵字

引入非同步函數,也稱為“非同步函數”,以進一步簡化非同步程式設計。這些函數以 async 關鍵字為前綴,並允許使用await 關鍵字。

await 暫停非同步函數的執行,直到其中的表達式(通常是 Promise)穩定下來。一旦表達式解析,函數就會恢復。例如:

<code class="javascript">async function myAsyncFunc() {
  try {
    const result = await randomProm;
    console.log(result);
  } catch (error) {
    console.log(error);
  }
}

myAsyncFunc();</code>

在此範例中,myAsyncFunc 是一個等待 randomProm Promise 結果的非同步函數。一旦 Promise 解析或拒絕,就會執行 try/catch 區塊的對應分支。透過利用 async 和 wait,我們消除了對複雜回呼邏輯的需求並增強了程式碼可讀性。

以上是如何在 JavaScript 中使用「async」和「await」進行流暢的非同步程式設計?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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