1. Promise.all()
Promise.all(iterable)方法返回一个Promise实例。这个实例在iterable参数内的所有Promise对象都resolved或者参数不包含Promise时回调完成。如果参数中有一个rejected,则此实例回调失败,失败原因时第一个rejected的promise结果。
例子
先定义两个函数,模拟异步请求。
func_1
在2秒之后状态变为resolved
,func_2
在3秒之后状态变为resolved
。
当两个函数都变为resolved
之后,Promise.all()的实例回调完成。
function func_1 () {
return new Promise(function (resolve, reject) {
setTimeout(function() {
console.log('func_1 end')
resolve()
}, 2000)
})
}
function func_2 () {
return new Promise(function (resolve, reject) {
setTimeout(function() {
console.log('func_2 end')
resolve()
}, 3000)
})
}
Promise.all([func_1(), func_2()])
.then(() => {
console.log('all end')
})
打印顺序如下:
2. Promise.race()
Promise.race(iterable) 。这个实例在iterable参数内的只要有一个Promise对象状态变为解决或拒绝,返回的 promise就会解决或拒绝。
function func_1 () {
return new Promise(function (resolve, reject) {
setTimeout(function() {
console.log('func_1 end')
resolve()
}, 2000)
})
}
function func_2 () {
return new Promise(function (resolve, reject) {
setTimeout(function() {
console.log('func_2 end')
resolve()
}, 3000)
})
}
Promise.race([func_1(), func_2()])
.then(() => {
console.log('end')
})
打印顺序如下:
end