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
是否成功完成後都須要執行的代碼提供了一種方式。
p.finally(onFinally); p.finally(function() { // 返回狀態爲(resolved 或 rejected) });