我正在短暂轮询一个端点,直到一些数据准备好我想重试请求最多 10 次。
当数据未准备好时,我收到一个带有空数组的 200。
当数据准备好时,我收到一个带有非空数组的 200。
我使用以下库 https://github.com/axios/axios https://github.com/softonic/axios-retry
try {
const axiosInstance = axios.create();
axiosInstance.interceptors.response.use((response) => {
if (response.data.metrics.length === 0) {
const error = new Error("Metrics Not Ready");
return Promise.reject(error);
}
return response;
}, (error) => {
return Promise.reject(error);
});
axiosRetry(axiosInstance, {
retries: 10,
retryCondition: (error) => {
console.log("RETRY CONDITION", error);
},
});
const metrics = await axiosInstance(options);
} catch (error) {
console.log(error);
}
我创建了一个 axios 拦截器来检查数组的长度,如果它是 0 我抛出错误。但是,这不会被 axiosRetry 捕获,此时我想重试请求。相反,它在 try catch 块中被捕获并结束。