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