Javascript React Native-运行和应用程序后应用程序崩溃;“设置间隔”;

Javascript React Native-运行和应用程序后应用程序崩溃;“设置间隔”;,javascript,android,reactjs,react-native,setinterval,Javascript,Android,Reactjs,React Native,Setinterval,我来这里是想问一个我一天都解决不了的问题 应用setInterval后,我的应用程序在物理android手机上崩溃,在我的模拟器中显示了一个我不熟悉的错误 在物理android手机和模拟器中,当我登录应用程序并在特定页面/屏幕上停留一分钟后,它将崩溃或显示错误 这是我的密码 export default class tables extends Component { constructor(props){ super(props) this.state

我来这里是想问一个我一天都解决不了的问题

应用setInterval后,我的应用程序在物理android手机上崩溃,在我的模拟器中显示了一个我不熟悉的错误

在物理android手机和模拟器中,当我登录应用程序并在特定页面/屏幕上停留一分钟后,它将崩溃或显示错误

这是我的密码

export default class tables extends Component {
    constructor(props){
        super(props)
        this.state = {
            data: [],
            ....
        }
    }
    fetchData = async () => {
        const response = await fetch('http://192.168.254.***:****/table');
        const json = await response.json();
        this.setState({ data: json });
    }

    componentDidMount = () => {
        this.Set_int = setInterval(() => {
            this.fetchData().then(() => {
                this.setState({ isLoading: false })
            });
        }, 5000);
    }

    componentWillUnmount = () => {
        clearInterval(this.Set_int);
    }

    render() {
        return (
            <View>
                 ....
                 .......
            </View>
        )
    }
}
导出默认类表扩展组件{
建造师(道具){
超级(道具)
此.state={
数据:[],
....
}
}
fetchData=async()=>{
const response=等待获取('http://192.168.254.***:***/table');
const json=await response.json();
this.setState({data:json});
}
componentDidMount=()=>{
this.Set_int=setInterval(()=>{
this.fetchData()。然后(()=>{
this.setState({isLoading:false})
});
}, 5000);
}
组件将卸载=()=>{
clearInterval(此.Set_int);
}
render(){
返回(
....
.......
)
}
}
以下是错误:

My console.log:


服务器日志中的2693896可能指的是响应长度,而解析为对象的2.6MB JSON响应可能会占用大量RAM。每5秒请求一次数据,无论上一次请求是否完成。如果客户端或服务器不能以这种速度处理数据,请求和状态更新将累积并占用所有可用RAM

setInterval
通常不应与承诺一起使用,因为它忽略了承诺链


为了改善这种情况,应仅在状态更新完成时安排新的间隔,或者在应保留5s间隔的情况下,可使用取消请求。

服务器日志中的2693896可能指响应长度,解析为对象的2.6MB JSON响应可能会占用大量RAM。每5秒请求一次数据,无论上一次请求是否完成。如果客户端或服务器不能以这种速度处理数据,请求和状态更新将累积并占用所有可用RAM

setInterval
通常不应与承诺一起使用,因为它忽略了承诺链


为了改善这种情况,应该只在状态更新完成时安排一个新的间隔,或者在需要保留5个间隔的情况下,可以使用取消请求。

componentDidMount
可以是类上的常规方法,不必是类字段箭头函数,
componentDidMount()
。与
componentWillUnmount
相同,但您希望改用
componentdidumount
componentDidMount
可以是类上的常规方法,无需是类字段箭头函数,
componentDidMount()
。与
componentWillUnmount
相同,但您希望改用
componentdidumount