提问者:小点点

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


我正在调用一个API,该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)返回一个承诺。 我该怎么解决这个问题? 谢谢


共2个答案

匿名用户

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);
    }));

匿名用户

你可以解决你的第二个承诺:

const final = users.data.forEach(async function (element) {
      element.managerName= await axios.get('/api/managers/managerName', element.id).then((manager) => manager.name);
    });