天天看點

Promise.all()、Promise.race()和Promise.finally()

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

繼續閱讀