1.是什么:
promise.all()该方法用于将多个Promise实例,包装成一个新的Promise实例。
2.格式:
var b = Promise.all([b1,b2,b3]);
3.用法:以上面的格式为例
1.只有b1、b2、b3都是fulfilled(成功)时,b才是fulfilled(成功),此时b1、b2、b3的返回值组成一个数组,传递给p的回调函数。
2.只要b1、b2、b3之中有一个被rejected,b的状态就变成rejected,此时第一个被reject(失败)的实例的返回值,会传递给 b 的回调函数。
4.代码示例:
let b1 = new Promise((resolve, reject) => { resolve('成功') }) let b2 = new Promise((resolve, reject) => { resolve('success') }) let b3 = Promse.reject('失败') Promise.all([b1, b2]).then((result) => { console.log(result) //打印结果:['成功', 'success'] }).catch((error) => { console.log(error) }) Promise.all([b1, b2,b3]).then((result) => { console.log(result) }).catch((error) => { console.log(error) // 打印结果: '失败' })
5.面试题:必须当三个ajax请求都成功时,才能发送第四个请求,用promise实现?
思路1:这道面试题,如果用promise.all()实现是最好的。具体步骤可以参考,示例代码。
思路2:假设面试官不让用这个方法。我们可以定义一个全局变量,初始值为1,不是要三个请求都成功才能发第四个吗,我们就让这个请求,每成功一个值加一,最后判断这个值是不是4,就完事了。