2020年3月11日
《每日一題系列??》
作者:王二狗
博客:掘金描滔、思否、知乎踪古、簡書含长、CSDN
點贊再看,養(yǎng)成習慣伏穆,每日一題系列會一直更新下去拘泞,你們的支持是我持續(xù)分享的最大動力??
Promise
Promise
是異步編程的一種解決方案,比傳統(tǒng)的解決方案回調函數(shù)和事件更合理和更強大枕扫。
有了Promise
對象陪腌,就可以將異步操作以同步操作的流程表達出來,避免了層層嵌套的回調函數(shù)烟瞧。
一個Promise
的當前狀態(tài)必須為以下三種狀態(tài)中的一種:等待態(tài)(Pending
)诗鸭、執(zhí)行態(tài)(Fulfilled
)和拒絕態(tài)(Rejected
),狀態(tài)的改變只能是單向的参滴,且變化后不可在改變强岸。
一個Promise
必須提供一個 then
方法以訪問其當前值、終值和據(jù)因砾赔。
promise.then(onFulfilled, onRejected)
回調函數(shù)只能執(zhí)行一次蝌箍,且返回 promise
對象
Promise
的每個操作返回的都是Promise
對象青灼,可支持鏈式調用。
通過 then
方法執(zhí)行回調函數(shù)妓盲,Promise
的回調函數(shù)是放在事件循環(huán)中的微隊列杂拨。
Promise
的具體用法如下(背代碼):
function fn(){
return new Promise((resolve, reject)=>{
成功時調用 resolve(數(shù)據(jù))
失敗時調用 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
告誡自己甚亭,即使再累也不要忘記學習贷币,成功沒有捷徑可走,只有一步接著一步走下去亏狰。 共勉役纹!
文章中如有不對的地方,歡迎小伙伴們多多指正暇唾。
謝謝大家~ ??