繁体   English   中英

在 forEach 中使用异步 API 调用的结果

[英]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。 我怎样才能解决这个问题? 谢谢

据我所知,您不能在forEachmap中使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM