Promise.all() 方法接收單個可迭代對象(如數組)做爲參數,並返回一個promise。每一個Promise都用一個數值進行了決議,對Promise.all() 的調用建立了新的 Promise p4。這些值的存儲順序保持了待決議(resolve)的Promise順序,與完成的前後順序無關,所以能夠將結果匹配到每一個Promise。若是任意Promise被拒絕,則p4會當即拒絕,沒必要等其餘 Promise結束。數組
/* eslint-disable prefer-promise-reject-errors,eol-last */ let p1 = new Promise((resolve, reject) => resolve(42)) let p2 = new Promise((resolve, reject) => reject(43)) let p3 = new Promise((resolve, reject) => resolve(44)) let p4 = Promise.all([p1, p2, p3]) let p5 = Promise.all([p1, p3]) p1.then(v=>console.log('p1 then: ' + v)) // p1 then: 42 p4.then(v=>console.log('p4 then: ' + v)) // 不執行 p4.catch(v=>console.log('catch: ' + v)) // catch: 43 p2被拒絕,p4的拒絕處理函數當即調用,不會等p1和p3結束執行。但p1和p2仍然會執行。 p5.then(v=>{ console.log(Array.isArray(v)) // true console.log(v) // [ 42, 44 ] })