Promise.all
Promise.all 是将多个Promise的实例组成一个新的Promise实例。
当有成功值时,返回的是成功的数组。
当有失败值时,返回的是最先被reject捕捉到失败状态的值。
上样例:
let demo_1 = new Promise((resolve, reject) => {
resolve("success---1")
})
let demo_2 = new Promise((resolve, reject) => {
resolve("success---2")
})
let demo_3 = new Promise.reject("fail---1")
Promise.all([demo_1, demo_2]).then((result) => {
console.log(result) // ['success---1', 'success---2']
}).catch((error) => {
console.log(error)
})
Promise.all([demo_1, demo_2, demo_3]).then((result) => {
console.log(result)
}).catch((error) => {
console.log(error) // error "fail---1"
})
实际用途:
1.Promise.all主要用于处理多个异步,比如,一个页面上需要等待多个接口数据回来以后才执行下边的方法,在此之前就可以用loading的样式。
2.由于 Promise.all 获得成功数据中数组顺序和接收数据的几个 Promise 顺序一致(上例中,demo_1 和 demo_2)。这样的话:在前端开发请求数据的过程中,如果遇到发送多个请求并根据请求顺序获取和使用数据的场景,使用 Promise.all 是一个很不错的选择。
Promise.race
Promise.race([demo_1, demo_2, demo_3]) 中哪个结果返回的速度快,就返回哪个,不管结果本身是成功状态还是失败状态。
这个场景使用比较少,根据实际情况使用。