【发布时间】:2020-09-22 14:39:25
【问题描述】:
我想进行多个 API 调用。调用次数为 12,我正在使用 Promise.all 方法。但问题是一些呼叫失败。失败的呼叫次数不固定。有时是 4 次,有时是 2 或 6 次。 但是当我过去只打 5 个电话时它工作正常。 任何人都可以帮助解决什么问题。 这是我的代码:
const getReturnData = async (item) => {
const res = await axios.get(`${BASE_URLS.signupBaseUrl}/mutual-funds/nav/${item}`)
return res;
}
const sample = ['call1', 'call2', 'call3', 'call4', 'call5', 'call6', 'call7', 'call8', 'call9', 'call10', 'call11', 'call12']
useEffect(() => {
let promises = sample.map(item => {return getReturnData(item)})
axios.all(promises).then(values => {
setReturnData(values.map(item => item));
}).catch(err => {
setReturnData([])
throw err
})
},[])
【问题讨论】:
-
失败了怎么办?你发现一个错误?错误详情是什么?服务器是否有速率限制请求或类似请求?
-
是的,我遇到了一个错误 500,但是当调用次数较少时,requsets 正常,大约 4 或 5
-
a 500 是您的服务器无法处理请求负载。你的javascript不是问题
-
如果您使用 Google 429,当服务器上有太多请求以防止其崩溃时,它会被抛出。要么不要一次发出这么多请求,要么与您的服务器管理员交谈以允许它们。
-
如果是500,那么和客户端无关,可能是多个请求的原因,但是固定需要在你的后端做。
标签: javascript promise axios es6-promise