我有一个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
}
}));