为async函数中数组中的每个值调用api



我有一个id的数组,我正试图迭代该数组,为每个id进行api调用。然而,我的api调用似乎没有通过,谁能提供一些见解?

id的数组看起来像这样:["provider-e44f1ccd-839c-413b-9559-0d2b359ee541", "provider-1cd9c1fe-de26-4b44-a1b9-03e6fc103ac4", "provider-1cd9c1fe-de26-4b44-a1b9-03e6fc103ac4", "system", "system", "provider-1cd9c1fe-de26-4b44-a1b9-03e6fc103ac4"]

我的调用函数是这样的:

useEffect(() => {
const loadProvider = async () => {

if(entries.length > 0){
const providerID = entries.map((entry => entry.createdBy))
console.log(providerID)
try{
const results = await api.Providers.get(providerID[+i])
console.log(results, "12345678987654321")
}catch(err){}
}
};
loadProvider();
}, [entries]);

我能够进入try语句,但只有一个调用返回时,我控制台results

我还尝试在try语句内使用map超过entries,但我得到了await结果变量的语法错误。

providerID是一个数组。你最好把它重命名为能反映这一点的名字。如providerIDs

providerID[+i]是语法错误。

如果你想为每个id做一个API请求,你必须以某种方式迭代你的providerIDs数组。你可以使用forEach:

useEffect(() => {
const loadProvider = () => {
const providerIDs = entries.map((entry) => entry.createdBy);
providerIDs.forEach(async (id) => {
try {
const result = await api.Providers.get(id);
console.log(result);
} catch (error) {
console.log(error);
}
})
};
loadProvider();
}, [entries]);

你可以使用Promise。All and .map

let results = await Promise.all(entries.map(async (entry) => {
try {
const result = await api.Providers.get(entry.createdBy)
return result;
} catch(error) {
//handle errors
}
}));

最新更新