Promise 是 JavaScript 的一個構造函式,用於創建表示非同步操作的物件實例。使用 new Promise()
時,你會創建一個包含非同步操作的實例,這個實例可以透過其繼承的方法如 then()
, catch()
, 和 finally()
來管理非同步操作的成功、失敗及其後續處理。
在創建 Promise 時,必須提供一個執行器函數(executor function),這個函數會立即執行並接收兩個參數:resolve
和 reject
。這些參數是函數,用於在異步操作成功時調用 resolve
,或在操作失敗時調用 reject
。
Promise 它具備了 callback 的優點,但透過 .then() 來標明流程,而 .then() 之間可以互相鏈結 (chaining),把之前「一層包一層的 callback」,轉換成 .then() 的串接。
function asyncFunction(value) {
return new Promise(function(resolve, reject) {
if(value) {
resolve(value)//已實現,成功
}else {
reject(reason)//有錯誤,已拒絕,失敗
}
})
}
//resolve的結果
function delay() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("Hello")
}, 1000)
})
}
//以下是一個Promise接到resolve的結果就設計成一個子函式(then)後再接到一個值後再印出
delay().then((res) => console.log(res))//印出"Hello"
//reject的結果
function delay() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject("Error")
}, 1000)
})
}
delay().catch((res) => console.log(res))//印出"Error"