Promise:Promise.all、Promise.race、Promise.any的用法及区别
在項目開發(fā)過程中經(jīng)常需要通過異步編程來實現(xiàn)功能,此時就需要我們了解Promise.
Promise
Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案回調(diào)函數(shù)和事件更合理和更強大。
有了Promise對象,就可以將異步操作以同步操作的流程表達(dá)出來,避免了層層嵌套的回調(diào)函數(shù)。
一個Promise的當(dāng)前狀態(tài)必須為以下三種狀態(tài)中的一種:等待態(tài)(Pending)、執(zhí)行態(tài)(Fulfilled)和拒絕態(tài)(Rejected),狀態(tài)的改變只能是單向的,且變化后不可在改變。
一個Promise必須提供一個 then 方法以訪問其當(dāng)前值、終值和據(jù)因。
promise.then(onFulfilled, onRejected)回調(diào)函數(shù)只能執(zhí)行一次,且返回 promise 對象
Promise的每個操作返回的都是Promise對象,可支持鏈?zhǔn)秸{(diào)用。
通過 then 方法執(zhí)行回調(diào)函數(shù),Promise的回調(diào)函數(shù)是放在事件循環(huán)中的微隊列。
Promise的具體用法如下:
function fn(){return new Promise((resolve, reject)=>{成功時調(diào)用 resolve(數(shù)據(jù))失敗時調(diào)用 reject(錯誤)})}fn().then(success1, fail1).then(success2, fail2)Promise.all
Promise.all()方法用于將多個 Promise 實例,包裝成一個新的 Promise 實例。
Promise.all()全部子實例都成功才算成功,有一個子實例失敗就算失敗。
Promise.all([promise1, promise2]).then(success1, fail1) promise1`和`promise2`都成功才會調(diào)用`success1Promise.race
Promise.race()方法也是將多個 Promise 實例,包裝成一個新的 Promise 實例。
Promise.race()rece是賽跑機制,要看最先的promise子實例是成功還是失敗。
Promise.race([promise1, promise2]).then(success1, fail1) promise1`和`promise2`只要第一個成功就會調(diào)用`success1Promise.any
Promise.any()方法同樣是將多個 Promise 實例,包裝成一個新的 Promise 實例。
Promise.any()有一個子實例成功就算成功,全部子實例失敗才算失敗。
Promise.race([promise1, promise2]).then(success1, fail1) promise1`和`promise2`只要有一個成功就會調(diào)用`success1總結(jié):Promise.all() 方法是 && 的關(guān)系;Promise.any() 方法是 || 的關(guān)系; Promise.race()方法是 賽跑機制 ;
總結(jié)
以上是生活随笔為你收集整理的Promise:Promise.all、Promise.race、Promise.any的用法及区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀镜怎么一直飞
- 下一篇: 懂球帝app怎么没有了(说真的还得懂车帝