【发布时间】:2018-12-11 00:02:07
【问题描述】:
运行 Node v 8+,以及 bluebird 和 lodash 库。
这是一个假对象数组:
const theList = [
{name: 'foo'
values: [ promise, promise, promise ] },
{name: 'bar',
values: [ promise ] }
];
如何编写 Promise 解析器,以便可以迭代整个对象数组,并解析包含 Promise 数组的属性?每个 Promise 都将解析为一个对象数组......因此它可能看起来像:[ [resolvedObj1], [resolvedObj1,resolvedObj2,resolvedObj3], [resolvedObj1, resolvedObj2] ]
我希望他们都解决,以便我有以下对象:
let resolved = [
{name: 'foo',
values: [resolved, resolved, resolved, resolved, resolved]},
{name: 'bar',
values: [resolved]}
];
这是我目前的解决方案:
const resolvedCollection= await Promise.map(theList, async obj=> {
const resolved = await Promise.all(obj.values);
obj.values = _.flatten(resolved); // lodash "flatten" function
return obj;
});
有没有更清洁的方法来做到这一点?也可能是我不需要对每个迭代的对象的values 属性进行硬编码的方式?
【问题讨论】:
标签: javascript arrays node.js promise