Javascript 不断尝试';获取';api。如果由于网络错误而失败
我在react中尝试Axios,一切都很好,只是我尝试添加一个功能。通常,如果我的页面加载,它会显示一个加载程序,如果由于网络速度较慢,加载程序会显示更长的时间 现在,如果我断开internet连接,加载程序将无限期显示,在使用网络刷新页面之前,它不会再进行任何调用 我想要的:-在任何时候(除非太长),当加载程序被显示时,它应该尝试“获取”API URL 这是密码Javascript 不断尝试';获取';api。如果由于网络错误而失败,javascript,reactjs,axios,Javascript,Reactjs,Axios,我在react中尝试Axios,一切都很好,只是我尝试添加一个功能。通常,如果我的页面加载,它会显示一个加载程序,如果由于网络速度较慢,加载程序会显示更长的时间 现在,如果我断开internet连接,加载程序将无限期显示,在使用网络刷新页面之前,它不会再进行任何调用 我想要的:-在任何时候(除非太长),当加载程序被显示时,它应该尝试“获取”API URL 这是密码 componentDidMount(){ axios.get('https://jsonplaceholder.typico
componentDidMount(){
axios.get('https://jsonplaceholder.typicode.com/posts').then(response =>{
const posts = response.data.slice(0,4);
const updatedPost = posts.map((post)=>{
return{
...post,
author:'Max'
}
})
this.setState({posts: updatedPost})
console.log(response);
}).catch((error)=>{
if(error.message === "Network Error"){
//What should be written here..!!!
}
})
}
您可以尝试使用
while
循环
//第一组状态
状态={
以色列回应:错误
}
函数get(){
get('url')
.then(response=>this.setState({isResponse:true}))
.catch(err=>console.log(err))
}
componentDidMount(){
//设定试验次数
var numberOfTrials=10
//设置初始值
var n=0
while(this.state.isResponse==false&&n
您可以尝试使用while
循环
//第一组状态
状态={
以色列回应:错误
}
函数get(){
get('url')
.then(response=>this.setState({isResponse:true}))
.catch(err=>console.log(err))
}
componentDidMount(){
//设定试验次数
var numberOfTrials=10
//设置初始值
var n=0
while(this.state.isResponse==false&&n
事实上,我试过了,但这只发生在几秒钟之内,我希望在放弃之前至少检查一整分钟。对不起,阿尔比特,代码未经测试,请现在就试用。我编辑了它,它会起作用,您可以根据需要更改试用次数……我不认为将其设置为基于时间将是一个好主意,它会使你的用户浏览器崩溃,并很容易导致堆栈溢出…而且我认为你不应该将numberOfTrials
设置为超过30~60。。。它可能会导致一些用户的堆栈溢出easilyNope,异步特性使其失败,请看,直到获取数据和设置状态时,循环运行30次,由于asyc特性,对api进行了30次调用,这违背了我的目的实际上,我试过了,但它发生在几秒钟之内,我希望它至少检查一整分钟,在放弃之前。抱歉,Alpit,代码未经测试,请现在试用。我编辑了它,它会起作用,您可以根据需要更改试用次数……我不认为将其设置为基于时间将是一个好主意,它会使你的用户浏览器崩溃,并很容易导致堆栈溢出…而且我认为你不应该将numberOfTrials
设置为超过30~60。。。它可能会导致某些用户easilyNope的堆栈溢出,异步特性使其失败,请参见,直到获取数据和设置状态时,循环运行30次,由于asyc特性,对api进行了30次调用,这与我的目的背道而驰