关于es6:promiseall

2次阅读

共计 845 个字符,预计需要花费 3 分钟才能阅读完成。

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) 报错了
    })
}
正文完
 0