Promise.all 出現異常時候處理


 

Promise.all 異常/出錯一般情況下,all里傳promise數組,但是只要有一個出錯,

就會進入到catch里,不會捕獲到正常數據的,所以我們要改寫下,實現正常和錯誤的結果都能處理

function P(error = false) {
    return new Promise((res, rej) => {
        if (error) {
            rej('error')
        } else {
            res('right')
        }
    })
}
var a = P() //成功的Promise
var b = P(true) // 失敗的promise

 

Promise.all(
  // promise數組,經過下面處理還是promise [a, b].map((p)
=> {
      //這里的紅色字體沒有什么作用,返回的依舊是成功的promise,我們優化,將他刪除
return p.then(function(res) { return res }) .catch(error => error) }) ) .then(res => { console.log(res, 'res') }) .catch(error => { console.log(error, 'error') })
//這里是優化過的代碼
Promise.all( [a, b].map((p)
=> { return p.catch(error => error) }) ) .then(res => { console.log(res, 'res') }) .catch(error => { console.log(error, 'error') })

 

 

 


免責聲明!

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



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