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);
}
)