Promise?是 JavaScript 中的一個對象,用于處理異步操作。它代表了一個最終可能完成(也可能被拒絕)的異步操作及其結果值。Promise 對象用于更復雜的異步編程模式,包括使用?.then()
?和?.catch()
?鏈式調用來處理異步操作的結果。
Promise 有三種狀態:
- Pending(待定):初始狀態,既不是成功,也不是失敗狀態。
- Fulfilled(已實現):意味著操作成功完成。
- Rejected(已拒絕):意味著操作失敗。
Promise 的關鍵特性是:
- 一旦狀態從 Pending 變為 Fulfilled 或 Rejected,就不能再更改狀態。
- 一旦狀態變為 Fulfilled 或 Rejected,就會觸發相應的?
.then()
?或?.catch()
?回調函數。
Promise 的基本用法如下:
javascript
const promise = new Promise((resolve, reject) => { | |
// 模擬異步操作 | |
setTimeout(() => { | |
if (/* 異步操作成功 */) { | |
resolve('操作成功!'); | |
} else { | |
reject('操作失敗!'); | |
} | |
}, 1000); | |
}); | |
promise.then(result => { | |
console.log(result); // 如果異步操作成功,輸出 '操作成功!' | |
}).catch(error => { | |
console.error(error); // 如果異步操作失敗,輸出 '操作失敗!' | |
}); |
此外,Promise 還支持鏈式調用、Promise.all、Promise.race 等高級用法,用于處理更復雜的異步邏輯。