Promise.all()

Promise.all(iterable) 方法返回一個 Promise 實例,此實例在 iterable 參數內全部的 promise 都「完成(resolved)」或參數中不包含 promise 時回調完成(resolve);promise

若是參數中  promise 有一個失敗(rejected),此實例回調失敗(reject),失敗緣由的是第一個失敗 promise 的結果。異步

官網例子:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/all函數

var promise1 = Promise.resolve(3);
var promise2 = null;
var promise3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
});
// expected output: Array [3, 42, "foo"]

若是有一個是reject則失敗spa

var promise1 = Promise.resolve(3);
var promise2 = reject();
var promise3 = new Promise(function(resolve, reject) {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
}).catch(()=>{
     console.log(err);
})

結果:Error: reject is not defined

 

 

finally() 方法返回一個 Promise。在promise結束時,不管結果是fulfilled或者是rejected,都會執行指定的回調函數。這爲在 Promise是否成功完成後都須要執行的代碼提供了一種方式。
這避免了一樣的語句須要在 then()catch()中各寫一次的狀況。
p.finally(onFinally);

p.finally(function() {
   // 返回狀態爲(resolved 或 rejected)
});
相關文章
相關標籤/搜索