Promise.all()
Promise.all接收一个可迭代对象(比如数组),并返回一个Promise对象。当可迭代对象中的所有Promise都fulfilled后,就能在.then()中调用它们的结果。如果有一个或多个Promise对象rejected,就会可以在.catch()中得到第一个rejected的结果。
举个例子:
var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');});
Promise.all([p1, p2, p3]).then(values => {
console.log(values); // [3, 1337, "foo"]
});
值得一提的是,如果在传入的可迭代对象为空时,Promise.all就会是同步任务。
Promise.race()
Promise.race和Promise.all一样接收一个可迭代对象,并返回一个Promise,当迭代器中任意一个Promise对象fulfilled或rejected,返回的Promise就会fulfilled或rejected。
Promise.finally()
Promise.finally是无论Promise最后是fulfilled还是rejected都会执行的操作。
举个例子:
let p1 = new Promise((resolve,reject) => {
DOSOMETHING......
});
p1.then(
() => {
console.log(1);
}
).catch(
() => {
console.log(2);
}
).finally(
() => {
console.log(3);
}
)