我在一个数组中有一个ID列表,因此我想将每个ID传递给API端点,以获取特定ID的信息,因此我想以并行方式完成此操作,而不是逐个调用,因此我使用axios,并且如果有1000个ID作为批处理,我想并行调用100个ID,然后再调用其余100个ID,有谁能给我建议一下这种方法的解决方案吗?
下面是代码:
const getApiResponse=(gitIds)=>{
let responseArray=[];
return listOfIds?.map((listId)=>{
const fetcServiceData = async (): Promise<void> => {
return api.get(`api-end-point/${listId}`);
};
fetcServiceData()
.then((value:any) => {
const response={
studentName: value.name,
grade: value.grade,
}
responseArray=[...responseArray,response]
return responseArray
})
.catch((error)=>{
console.log(error)
})
return responseArray;
})
}
3条答案
按热度按时间yyyllmsg1#
您应该能够创建多个promise并将它们推入数组中,然后使用Promise.all一起解析所有这些promise。
Keep in mind that Promise.all rejects as soon as any of those promises is rejected with the first error message.
示例:
kgsdhlau2#
我喜欢这种连锁承诺的模式,返回它们以保持承诺链的活力。
就像这样:
yduiuuwa3#
我会做你想做的事。
然而,在不太可能的情况下,你实际上是这样做的,你应该问自己这个问题,为什么我堵塞了我的请求行?
假设我需要10k条记录...
异步...
到我的服务器...
10个用户做同样的事情...
这不是要花很长时间吗?我是不是在用自己的代码进行隐藏的DDoS攻击?
解决这个问题的一个更好的方法是添加一个API端点,在其中可以给予一定数量的id,这些id将返回所需的数据。