node.js - 每次重试都超时重试 Axios POST 请求
问题描述
我有一个用例,如果出现任何错误,我需要重试 Axios 请求 3 次,如果在 3 秒内没有得到任何响应,则每次重试尝试应该在 3 秒内超时。下面是我正在使用的代码。它重试 3 次,但每次重试都不会超时。如何使每次重试尝试超时?任何代码片段都会有所帮助。
const axiosRetry = require('axios-retry');
axiosRetry(axios, { retries: 3 });
axios.post(url,payload,{headers:header})
.then((response) =>{
console.log('Response is *****'+JSON.stringify(response));
})
.catch((err) =>{
console.log('Error occurred'+err);
});
解决方案
1)我没有看到你timeout
在代码中的任何地方设置为 3 秒。
2)默认情况下,axios-retry
将请求超时解释为全局值,因此如果您需要在每次重试 3 秒后超时,请设置shouldResetTimeout: true
.
3) 默认情况下,axios-retry
不重试超时请求(即带有ECONNABORTED
代码的请求)和非幂等请求(如POST
. 设置一个自定义retryCondition
来改变它。
鉴于上述几点,这样的事情应该有效:
const axios = require('axios').default;
const axiosRetry = require('axios-retry');
axiosRetry(axios, {
retries: 3,
shouldResetTimeout: true,
retryCondition: (_error) => true // retry no matter what
});
axios.post(url, payload, {headers: header, timeout: 3000})
.then((res) => {
console.log('Response is *****', res);
})
.catch((err) => {
console.log('Error occurred' + err);
});
另外,请务必使用axios@0.19.1
或以上。
推荐阅读
- c - C中的信号量死锁
- c++ - 多线程未按预期运行
- docker - 加快 'apt-get update' 以加快 Docker 映像构建
- c# - 控制器的非异步方法是否会阻止其他用户在使用或锁定时进入?
- f# - 如何在 F# 中使用 C# 可为空的日期时间
- c++ - CMake 找不到 boost_test
- python - 如何将函数中的值设置为 CSV?
- php - Wordpress 添加重写规则重定向而不是“隐藏”
- youtube - Youtube 评论 API 抛出“权限不足:请求的身份验证范围不足”错误
- ios - 当我的应用程序在后台运行时,是否可以获取用户正在使用的当前应用程序?