Promise

Promise

一、語(yǔ)法

new Promise(function(resolve,reject){
    ... 
}/* executor */)
  • 參數(shù)
    • executor是帶有resolvereject兩個(gè)參數(shù)的函數(shù)
    • Promise構(gòu)造函數(shù)執(zhí)行時(shí)立即調(diào)用executor函數(shù)
    • resolve和reject函數(shù)被調(diào)用時(shí),分別將promise的狀態(tài)改編為fulfilled(成功)和rejected(失敗)
    • 如果executor函數(shù)跑出一個(gè)錯(cuò)誤,那么該promise狀態(tài)為rejected

二、描述

  • 一個(gè)promise有以下集中狀態(tài):
    • pending 初始狀態(tài)
    • fulfilled 操作成功
    • rejected 操作失敗

三、方法

  1. Promise.all(iterable)
    • 返回一個(gè)新的promise對(duì)象,該promise對(duì)象在iterable參數(shù)對(duì)象里所有的promise對(duì)象都成功的時(shí)候才會(huì)觸發(fā)成功,一旦有任何一個(gè)iterable里面的promise對(duì)象失敗則立即觸發(fā)該promise對(duì)象的失敗。
    • 新的promise對(duì)象在觸發(fā)成功狀態(tài)以后,會(huì)把一個(gè)包含iterable里所有promise返回值的數(shù)組作為成功回調(diào)的返回值,順序跟iterable的順序保持一致;如果這個(gè)新的promise對(duì)象觸發(fā)了失敗狀態(tài),它會(huì)把iterable里第一個(gè)觸發(fā)失敗的promise對(duì)象的錯(cuò)誤信息作為它的失敗錯(cuò)誤信息
  2. Promise.allSettled(iterable)
  3. Promise.any(iterable)
    • 接收一個(gè)Promise對(duì)象的集合,當(dāng)其中的一個(gè)promise 成功,就返回那個(gè)成功的promise的值。
  4. Promise.race(iterable)
  • 接收一個(gè)Promise對(duì)象的集合,當(dāng)其中的一個(gè)promise 成功,就返回那個(gè)成功的promise的值。
  1. Promise.reject(reason)
    • 返回一個(gè)狀態(tài)為失敗的Promise對(duì)象,并將給定的失敗信息傳遞給對(duì)應(yīng)的處理方法
  2. Promise.resolve(value)
    • 返回一個(gè)狀態(tài)由給定value決定的Promise對(duì)象。
    • 如果你不知道一個(gè)值是否是Promise對(duì)象,使用Promise.resolve(value)來(lái)返回一個(gè)Promise對(duì)象,這樣就能將該value以Promise對(duì)象形式使用。

四、創(chuàng)建Promise

  1. 創(chuàng)建
const myPromise = new Promise((resolve,reject)=>{
    // resolve(someValue)  => fulfilled
    // or
    // reject(failure reason) => rejected
})


  1. 想要某個(gè)函數(shù)擁有promise的功能,只要讓其返回一個(gè)promise即可
function fn(){
    return new Promise((resolve,reject)=>{
        // ...
    })
}
  1. 錯(cuò)誤捕獲

new Promise((resolve,reject)=>{
    resolve()
}).then(res=>{

}).catch(err=>{
    //catch如果不再拋出錯(cuò)誤的話也會(huì)返回一個(gè)promise對(duì)象,且是resolve狀態(tài)
}).then(res=>{
    //如果有錯(cuò)誤且catch執(zhí)行之后沒有再拋出新錯(cuò)誤就會(huì)執(zhí)行該處的語(yǔ)句
}
  1. then()
    • .then()函數(shù)如果返回新的promise,那么下一級(jí).then()會(huì)在新的promise狀態(tài)改變后做出響應(yīng)
    • .then()函數(shù)如果返回其他任何值,那么下一級(jí).then()會(huì)立即執(zhí)行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容