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') })