- Promise.all()方法
问题:什么是promise.all()方法?
promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
promise.all()方法接受一个参数, 这个参数可以一般是一个数组(或者其他具有iterator迭代属性的参数),而且必须是每个成员都是promise实例。
注意:所有的参数必须都是resolve状态,promise.all()才会执行成功。如果有一个参数是reject状态即会失败。
如果参数的promise实例没有catch方法,就会调用promise.all()的catch方法
Example:
let a = new Promise((resolve, reject) => {
resolve('23')
})
let b = new Promise((resolve, reject) => {
resolve('12')
})
Promise.all([a, b])
.then(([a,b]) => test(a,b))
.catch(()=>{console.log('all方法失败了。。。')})
function test(a,b){
console.log(a+b, '--a+b--') // '2312'
}
-
promise.race()方法
Promise.race方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
Example:
const p = new Promise([p1,p2,p3])
上面代码中,只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。 -
promise.resolve()方法
promise.resolve()方法等价于下面的写法:console.log(Promise.resolve(‘foo’), ‘—123–’)
// 等价于
console.log(new Promise(resolve => resolve(‘foo’)))
promise.resolve()分为参数分为4种形式: