FE Interview Hub
JavaScript 中階

Promise 是什麼?有什麼用途?

AI 練習作答

什麼是 Promise?

Promise 是 JavaScript 中用來處理非同步操作的物件,代表一個**尚未完成但最終會完成(或失敗)**的操作。它解決了「回調地獄(Callback Hell)」的問題。

三種狀態

狀態 說明
Pending(等待中) 初始狀態,操作尚未完成
Fulfilled(已完成) 操作成功,有回傳值
Rejected(已拒絕) 操作失敗,有錯誤原因

狀態一旦改變就不可逆

基本用法

// 建立 Promise
const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    const success = true;
    if (success) {
      resolve('操作成功!');
    } else {
      reject(new Error('操作失敗!'));
    }
  }, 1000);
});

// 使用 Promise
promise
  .then(result => console.log(result))   // '操作成功!'
  .catch(error => console.error(error))
  .finally(() => console.log('完成'));

Promise 鏈(Promise Chaining)

fetch('/api/user')
  .then(res => res.json())
  .then(user => fetch('/api/posts?userId=' + user.id))
  .then(res => res.json())
  .then(posts => console.log(posts))
  .catch(err => console.error(err));

async/await(語法糖)

async function loadData() {
  try {
    const res = await fetch('/api/user');
    const user = await res.json();
    console.log(user);
  } catch (err) {
    console.error(err);
  }
}

常用靜態方法

方法 說明
Promise.all() 全部成功才 resolve,任一失敗則 reject
Promise.race() 最快完成(不論成敗)的結果
Promise.allSettled() 等待全部完成,不管成功或失敗
Promise.any() 任一成功即 resolve

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分