簡體   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