Promise
Promise
是異步編程的一種解決方案,比傳統的解決方案回調函數和事件更合理和更強大。
有了Promise
對象,就可以將異步操作以同步操作的流程表達出來,避免了層層嵌套的回調函數。
一個Promise
的當前狀態必須爲以下三種狀態中的一種:等待態(Pending
)、執行態(Fulfilled
)和拒絕態(Rejected
),狀態的改變只能是單向的,且變化後不可在改變。
一個Promise
必須提供一個 then
方法以訪問其當前值、終值和據因。
promise.then
(onFulfilled
, onRejected
) 回調函數只能執行一次,且返回 promise
對象
Promise
的每個操作返回的都是Promise
對象,可支持鏈式調用。
通過 then
方法執行回調函數,Promise
的回調函數是放在事件循環中的微隊列。
Promise
的具體用法如下(背代碼):
function fn(){
return new Promise((resolve, reject)=>{
成功時調用 resolve(數據)
失敗時調用 reject(錯誤)
})
}
fn().then(success1, fail1).then(success2, fail2)
Promise.all
Promise.all()
方法用於將多個 Promise
實例,包裝成一個新的 Promise
實例。
Promise.all([promise1, promise2]).then(success1, fail1)
promise1
和promise2
都成功纔會調用success1
Promise.race
Promise.race()
方法同樣是將多個 Promise
實例,包裝成一個新的 Promise
實例。
Promise.race([promise1, promise2]).then(success1, fail1)
promise1
和promise2
只要有一個成功就會調用success1