2020年3月11日
《每日一題系列🚀》
做者:王二狗
博客:掘金、思否、知乎、簡書、CSDN
點贊再看,養成習慣,每日一題系列會一直更新下去,大家的支持是我持續分享的最大動力😘編程
Promise
Promise
是異步編程的一種解決方案,比傳統的解決方案回調函數和事件更合理和更強大。segmentfault
有了Promise
對象,就能夠將異步操做以同步操做的流程表達出來,避免了層層嵌套的回調函數。promise
一個Promise
的當前狀態必須爲如下三種狀態中的一種:等待態(Pending
)、執行態(Fulfilled
)和拒絕態(Rejected
),狀態的改變只能是單向的,且變化後不可在改變。異步
一個Promise
必須提供一個 then
方法以訪問其當前值、終值和據因。異步編程
promise.then(onFulfilled, onRejected)
回調函數只能執行一次,且返回 promise
對象函數
Promise
的每一個操做返回的都是Promise
對象,可支持鏈式調用。學習
經過 then
方法執行回調函數,Promise
的回調函數是放在事件循環中的微隊列。ui
Promise
的具體用法以下(背代碼):spa
function fn(){
return new Promise((resolve, reject)=>{
成功時調用 resolve(數據)
失敗時調用 reject(錯誤)
})
}
fn().then(success1, fail1).then(success2, fail2)
複製代碼
Promise.all
Promise.all()
方法用於將多個 Promise
實例,包裝成一個新的 Promise
實例。.net
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
告誡本身,即便再累也不要忘記學習,成功沒有捷徑可走,只有一步接着一步走下去。 共勉!
文章中若有不對的地方,歡迎小夥伴們多多指正。
謝謝你們~ 💘