雖然沒準備什麼資料
  • JS魔法學院
    • JS表單
    • 教程
    • 練習題
  • AI
  • 程式相關
    • CSS
    • Javascript
  • 試題與解答
    • 微生物免疫
    • 化學
    • 生物輸送
  • 台式外語
    • 韓國語
    • 日本語
  • 有趣網站
首頁 » async/await 教學-JavaScript 魔法學院
JS魔法學院教程

async/await 教學-JavaScript 魔法學院

by Jamic 2024-05-28
2.6K

在現代的 JavaScript 開發中,非同步程式碼已成為不可或缺的一部分。async 和 await 是兩個強大的關鍵字,能讓我們以更簡潔和直觀的方式處理非同步操作。本篇教學將帶你深入瞭解這兩個關鍵字。

目錄

  • 基本概念
  • 使用 async 和 await
  • 錯誤處理
  • 重要提示
  • 範例練習
  • 結論
  • 進階學習資源

基本概念

async 關鍵字用於聲明一個非同步函數,該函數會自動返回一個 Promise。await 關鍵字則用於等待一個 Promise 被解決(resolved),它只能在 async 函數內使用。

使用 async 和 await

讓我們先來看看如何使用 async 和 await:

// 聲明一個異步函數
async function fetchData() {
  // 使用 await 等待 Promise 被解決
  let response = await fetch('https://api.example.com/data');
  let data = await response.json();
  console.log(data);
}

// 調用異步函數
fetchData();

在這個例子中,fetchData 函數使用 fetch API 來獲取資料。因為 fetch 返回一個 Promise,我們可以用 await 關鍵字來等待其完成並獲取結果。

錯誤處理

我們可以使用 try...catch 語句來處理非同步操作中的錯誤:

async function fetchData() {
  try {
    let response = await fetch('https://api.example.com/data');
    if (!response.ok) {
      throw new Error('網路回應錯誤');
    }
    let data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('發生錯誤:', error);
  }
}

fetchData();

在這裡,我們使用 try...catch 語句來捕捉和處理非同步操作中的錯誤,例如網路請求失敗或解析 JSON 資料失敗。

重要提示

  • 只能在 async 函數內使用 await:如果在非 async 函數內使用 await,會導致語法錯誤。
  • 返回值會被包裝成 Promise:即使 async 函數內沒有明確返回 Promise,其返回值也會被自動包裝成 Promise。

範例練習

試試看自己寫一個使用 async 和 await 的範例。你可以從以下簡單的練習開始:

  1. 基本練習:寫一個 async 函數,使用 fetch 來從一個 API 獲取資料,並使用 console.log 列印資料。
  2. 錯誤處理:改進你的 async 函數,新增 try...catch 語句來處理可能的錯誤,並列印錯誤訊息。
  3. 多個非同步操作:在一個 async 函數內連續呼叫兩次 fetch,分別獲取不同的資料,並將結果結合在一起。

範例code可參考這篇

結論

async 和 await 是處理 JavaScript 中非同步操作的強大工具,能使程式碼更簡潔易懂。希望這篇教學能幫助你掌握這些關鍵字,讓你的程式設計更加順暢。

進階學習資源

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function


探索更多來自 雖然沒準備什麼資料 的內容

訂閱即可透過電子郵件收到最新文章。

非同步
分享 0 FacebookTwitterLINEEmail

留個言 取消回覆

將姓名、email存到這個瀏覽器,以便下次使用

使用電子郵件訂閱網站

輸入你的電子郵件地址訂閱網站的新文章,使用電子郵件接收新通知。

最新文章

  • React useRef × BootStrap Modal 筆記

    2026-01-14
  • 7-11 雙蔬鮪魚飯糰

    2025-10-30
  • 保持專注的秘訣

    2025-10-29
  • Cursor Zeabur 插件 vs GitHub 綁定部署

    2025-07-30
  • Product Brief Template — AI 建構式應用產品

    2025-07-10

文章分類

  • JS魔法學院 (7)
    • JS表單 (1)
    • 教程 (4)
    • 練習題 (2)
  • React教學 (1)
    • BootStrap (1)
  • soledad佈景主題 (1)
    • 單篇文章 (1)
  • Vue3學院 (2)
    • watch (1)
    • 設定 (1)
  • Wordpress外掛介紹 (1)
  • 台式外語 (5)
    • 日本語 (3)
    • 英語 (1)
    • 韓國語 (1)
  • 外食成份 (1)
  • 好書介紹 (3)
  • 小孩相關 (1)
  • 投資理財 (11)
    • 定存 (2)
    • 股票 (9)
      • 台股 (1)
      • 美股 (3)
  • 效率 (1)
  • 有趣網站 (1)
  • 未分類 (1)
  • 程式相關 (11)
    • AI (5)
    • CSS (1)
    • google sheets (1)
    • Javascript (1)
    • 豆知識 (2)
  • 網站部署 (1)
  • 試題與解答 (12)
    • 儀器分析 (1)
    • 專利研究 (2)
    • 微生物免疫 (8)
    • 醫用統計學 (1)

網站統計

  • 0
  • 3
  • 3
  • 188
  • 6,424
  • 4,583
  • 59
  • 2026-01-14

© 2023 雖然沒準備什麼資料

雖然沒準備什麼資料
  • JS魔法學院
    • JS表單
    • 教程
    • 練習題
  • AI
  • 程式相關
    • CSS
    • Javascript
  • 試題與解答
    • 微生物免疫
    • 化學
    • 生物輸送
  • 台式外語
    • 韓國語
    • 日本語
  • 有趣網站