promise原理
Promise.all()办法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
const p = Promise.all([p1, p2]);
状态响应状况
p的状态由p1、p2决定,分成两种状况。
(1)只有p1、p2的状态都变成fulfilled,p的状态才会变成fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。
(2)只有p1、p2之中有一个被rejected,p的状态就变成rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。
不同之处
p1、p2
实例的.catch
办法与 .promise.all()
办法的.catch
const p1 = new Promise((reslove) => { reslove('胜利回调')}).then(res => res).catch(err => err)const p2 = new Promise((reslove, reject) => { reject('报错了')}).then(res => res).catch(err => err)export default function() { return Promise.all([p1, p2]).then((res) => { console.log(res) ["胜利回调", "报错了"] }).catch((err) => { console.log(err) })}
const p1 = new Promise((reslove) => { reslove('胜利回调')}).then(res => res)const p2 = new Promise((reslove, reject) => { reject('报错了')}).then(res => res)export default function() { return Promise.all([p1, p2]).then((res) => { console.log(res) }).catch((err) => { console.log(err) 报错了 })}