前端面試題——Promise、Promise.all、Promise.race 分別怎麼用?

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)

promise1promise2都成功纔會調用success1

Promise.race

Promise.race()方法同樣是將多個 Promise 實例,包裝成一個新的 Promise 實例。

Promise.race([promise1, promise2]).then(success1, fail1)

promise1promise2只要有一個成功就會調用success1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章