筛选/恢复Promise.all结果
Filter/recover Promise.all result
示例:
function myFunc(args ...){
...
return Promise.all(myPromisesArray)
}
如果myPromisesArray
中的一个promise失败,我只会在返回值中得到拒绝原因。
是否有恢复所有其他已解析值的方法?
如果您使用Q,那么有一个名为Q.allSettled
的函数基本上可以满足您的要求。
否则,这个简单的函数将为您提供所有承诺的结果,并告诉您是成功还是失败。然后,你可以对成功或失败的承诺做任何你需要做的事情。
/**
* When every promise is resolved or rejected, resolve to an array of
* objects
* { result: [ Promise result ], success: true / false }
**/
function allSettled(promises) {
return Promise.all(
promises.map(
promise => promise.then(
// resolved
(result) => ({ result: result, success: true }),
// rejected
(result) => ({ result: result, success: false })
)
)
);
}
// example usage:
const one = Promise.resolve(1);
const two = Promise.reject(2);
const three = Promise.resolve(3);
allSettled([ one, two, three ])
.then((results) => {
console.log(results[0]); // { result: 1, success: true }
console.log(results[1]); // { result: 2, success: false }
console.log(results[2]); // { result: 3, success: true }
});
相关文章:
- 奇怪的Javascript结果
- Javascript(jQuery)给了我奇怪的结果
- JSONP请求返回结果,但也触发error_callback
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Javascript,输出结果后页面不断刷新
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- Nested Q.all nodejs
- 将地理编码结果转换为php变量以发布到mysql数据库
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- JQuery:向多个匹配结果添加换行符的最简单方法
- Bootstrap Dropdown selection是在*all*下拉菜单上设置选择
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- webpack代码拆分了handlerbs文件——结果是文件很大
- JavaScript循环无法正确计算/显示结果
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- Alasql:UNION(或UNION ALL)仅给出表1的结果
- 当你想要所有结果而不管是否被拒绝时,用什么代替Promise.all()
- 从Q.all压缩结果的最佳方式
- 筛选/恢复Promise.all结果