【前端開發】Promise幾種常見用法


1、Promise.all()

ABC都成功時才能拿到返回值

Promise.alll() 具有並發執行異步任務的能力。但它的最大問題就是如果參數中的任何一個promise為reject的話,則整個Promise.all() 調用會立即終止,導致數據都無法返回。
可以用於接口返回值有依賴的情況下使用

Promise.all([
    api.getUserInfo(), //接口
    api.getMemberInfo(),//接口
    api.getFocusedWechat(),//接口
]).then(res =>{
    if (res[0].code === 0) {
        console.log('success0')
    }
    if (res[1].code === 0) {
        console.log('success1')
    }
}).catch((res)=> {
    console.log('errorAll')
})

2、Promise.race()

依次執行、最新返回的Promise是成功的即可拿到返回值,后面promie執行失敗即打斷執行

如果最先返回的Promise請求是success狀態,則不管其他請求是否成功,都能獲取到返回值。

const promises = [
  new Promise((resolve, reject) =>
    setTimeout(() => resolve('result'), 100)), // (A)
  new Promise((resolve, reject) =>
    setTimeout(() => reject('ERROR'), 200)), // (B)
  new Promise((resolve, reject) =>
    setTimeout(() => resolve('result'), 300)), // (C)
];
Promise.race(promises)
  .then((result) => assert.equal( // (D)
    result, 'result'));

3、Promise.allSettled()

ABC全部處理完不管成功失敗都能拿到每個Promise的返回狀態

作用跟Promise.all() 類似,不同點在於,它不會進行短路。也就是說當Promise全部處理完成后,我們可以拿到每個Promise的狀態,而不管是否處理成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM