如何找外贸网站建设公司,中石化网站是哪个公司做的,网站挂直播连接怎么做,汽车电子商务网站建设规划书Promise.all 的基础介绍
作用#xff1a;Promise.all()方法用于将多个 Promise 实例#xff0c;包装成一个新的 Promise 实例。
参数#xff1a;由多个Promise实例组成的数组
const p Promise.all([p1, p2, p3]);p的状态由p1、p2、p3决定#xff0c;分成两种情况。
Promise.all()方法用于将多个 Promise 实例包装成一个新的 Promise 实例。
参数由多个Promise实例组成的数组
const p Promise.all([p1, p2, p3]);p的状态由p1、p2、p3决定分成两种情况。
1只有p1、p2、p3的状态都变成fulfilledp的状态才会变成fulfilled此时p1、p2、p3的返回值组成一个数组传递给p的回调函数。
2只要p1、p2、p3之中有一个被rejectedp的状态就变成rejected此时第一个被reject的实例的返回值会传递给p的回调函数。
Demo–Promise.all如果其中之一失败怎么能够拿到其他成功的结果
该实例的最终结果被Promise.all的catch方法捕获
如果f3没有自己的catch方法就会调用Promise.all()的catch方法。
let f1 new Promise((resolve,reject) {setTimeout(() {resolve(f11111)},2000)
})
let f2 new Promise((resolve,reject) {setTimeout(() {resolve(f22222)},1000)
})
let f3 new Promise((resolve,reject) {setTimeout(() {reject(err-f33333)},3000)})
let a [f1,f2,f3]
// promise.all中的异步请求是并发执行的但是最终的返回结果是按照最初的顺序执行排列好的
Promise.all(a).then(data { console.log(data)
}).catch(err {console.log(糟糕出错了)
})
//执行结果糟糕出错了如果作为参数的 Promise 实例自己定义了catch方法那么它一旦被rejected并不会触发Promise.all()的catch方法。
let f1 new Promise((resolve,reject) {setTimeout(() {resolve(f11111)},2000)
})
let f2 new Promise((resolve,reject) {setTimeout(() {resolve(f22222)},1000)
})
let f3 new Promise((resolve,reject) {setTimeout(() {reject(err-f33333)},3000)}).catch(errerr)
let a [f1,f2,f3]
// promise.all中的异步请求是并发执行的但是最终的返回结果是按照最初的顺序执行排列好的
Promise.all(a).then(data { console.log(data)
}).catch(err {console.log(糟糕出错了)
})
// 执行结果 [f11111, f22222, err-f33333]这个例子中f1,f2会resolved。 f3首先会rejected但是f3有自己的catch方法该方法返回的是一个新的Promise 实例, f3指向的实际上是这个实例. 该实例执行完catch方法后也会变成resolved。 导致Promise.all()方法参数里面的三个实例都会resolved因此会调用then方法指定的回调函数而不会调用catch方法指定的回调函数。 参考自ES6-Promise.all