必考:Promise、Promise.all、Promise.race 分別怎麼用?

2020年3月11日
《每日一題系列🚀》
作者:王二狗
博客:掘金思否知乎簡書CSDN
點贊再看,養成習慣,每日一題系列會一直更新下去,你們的支持是我持續分享的最大動力😘

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

告誡自己,即使再累也不要忘記學習,成功沒有捷徑可走,只有一步接着一步走下去。 共勉!

文章中如有不對的地方,歡迎小夥伴們多多指正。

謝謝大家~ 💘

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