【发布时间】:2019-12-21 09:22:51
【问题描述】:
我有一个对象数组,我必须为来自异步函数的每个对象添加一个属性
我正在做一个 Array.reduce 来迭代每个元素并只返回一个结果:一个具有新属性的对象数组。
我有这个
const res = await resultOne.reduce(async (users = [], user, i) => {
let userName;
try {
let { name } = await names.getNames(user.id);
userName = name;
} catch (error) {
throw error;
}
delete user.id;
users.push({ ...user, userName });
return users;
}, []);
但我收到了消息
推送不是用户的功能
这是因为我认为是一个承诺。
如何处理reduce 或map 中的异步请求
【问题讨论】:
-
如果你可以使用 Promise 库,你可以使用 bluebird 的 Promise.reduce。 IE。
const res = await Promise.reduce( resultOne, async (users .... -
@Paulpro 感谢您的回复,问题是我认为在这种情况下添加另一个依赖项是完全必要的,这是我不会在整个项目中重复的内容.
标签: javascript node.js ecmascript-6 reduce