[英]Use the result of an async API call inside a forEach
我正在调用返回用户列表的 API,如下所示:
const users = await axios.get('/api/users/all');
res.data 现在是我的用户数组,每个用户都有一个名为 manager 的字段,该字段是来自另一个模式的经理的 id 我还有另一个 API 在提供他们的 id 时返回经理名称
axios.get('/api/managers/managerName', id)
我想运行一个 forEach 将经理姓名插入到我的结果中,而不是他的 ID。 我在尝试
const users= await axios.get('/api/users/all');
const final = users.data.forEach(function (element) {
element.managerName= axios.get('/api/managers/managerName', element.id);
});
但当然这不起作用,因为axios.get('/api/managers/managerName', element.id)
返回 promise。 我怎样才能解决这个问题? 谢谢
据我所知,您不能在forEach
或map
中使用await
。 它不起作用(不等待)。 您必须使用for
循环。
for( let element of users.data) {
element.managerName = await axios.get('/api/managers/managerName', element.id);
}
您可以解决您的第二个 promise:
const final = users.data.forEach(async function (element) {
element.managerName= await axios.get('/api/managers/managerName', element.id).then((manager) => manager.name);
});
const users= await axios.get('/api/users/all');
const final = Promise.all(
users.data.map(async (element) => {
element.managerName = await axios.get('/api/managers/managerName', element.id);
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.