var p1 = new Promise((resolve, reject) => {
resolve(1)
})
var p2 = new Promise((resolve, reject) => {
resolve(2)
})
var p3 = new Promise((resolve, reject) => {
resolve(3)
})
//promise.all
//参数是一个数组形式,返回的结果是按照传参顺序返回的,返回的result是一个数组
//即:[1,3,2]
Promise.all([p1, p3, p2]).then((result) => {
console.log(result)
}).catch((error) => {
console.log(error)
})
var p1 = new Promise((resolve, reject) => {
resolve(1)
})
var p2 = new Promise((resolve, reject) => {
reject(2)
})
var p3 = new Promise((resolve, reject) => {
resolve(3)
})
Promise.all([p1, p3, p2]).then((result) => {
console.log(result)
}).catch((error) => {
console.log(error) // 失败了,打出 '失败'
})
//当有reject时候,则直接返回最先被reject失败状态的值。
//即2
var p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1)
}, 2000)
})
var p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2)
}, 1000)
})
//promise.race
//与all不同的是race是那个结果响应最快,就返回那个结果
//即:2
Promise.race([p1, p2]).then((result) => {
console.log(result)
}).catch((error) => {
console.log(error)
})
总结:
Promise.all方便在传参顺序就决定的返回值的顺序,当有多个promise的操作是,可以使用Promise.all来控制
Promise.race可以快速返回最快响应的操作,无论状态是成功还是失败