Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不断尝试';获取';api。如果由于网络错误而失败_Javascript_Reactjs_Axios - Fatal编程技术网

Javascript 不断尝试';获取';api。如果由于网络错误而失败

Javascript 不断尝试';获取';api。如果由于网络错误而失败,javascript,reactjs,axios,Javascript,Reactjs,Axios,我在react中尝试Axios,一切都很好,只是我尝试添加一个功能。通常,如果我的页面加载,它会显示一个加载程序,如果由于网络速度较慢,加载程序会显示更长的时间 现在,如果我断开internet连接,加载程序将无限期显示,在使用网络刷新页面之前,它不会再进行任何调用 我想要的:-在任何时候(除非太长),当加载程序被显示时,它应该尝试“获取”API URL 这是密码 componentDidMount(){ axios.get('https://jsonplaceholder.typico

我在react中尝试Axios,一切都很好,只是我尝试添加一个功能。通常,如果我的页面加载,它会显示一个加载程序,如果由于网络速度较慢,加载程序会显示更长的时间

现在,如果我断开internet连接,加载程序将无限期显示,在使用网络刷新页面之前,它不会再进行任何调用

我想要的:-在任何时候(除非太长),当加载程序被显示时,它应该尝试“获取”API URL

这是密码

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次调用,这与我的目的背道而驰