Hier ist die Komponente:So löschen Sie eine Async-Funktion beim ComponentWillUnmount in einer Reactjs-Komponente?
class ChartComp extends Component{
constructor(props){
super(props);
this.timer = null;
this.loadData = this.loadData.bind(this);
}
componentWillMount(){
this.loadData();
}
componentWillUnmount(){
if(this.timer){
clearTimeout(this.timer);
}
}
loadData(){
//...
getJSON(url, msg=>{ //get data from server
if(msg.success){
//...
this.timer = setTimeout(()=>{this.loadData()}, 30000); //get data and rerender the component every 30s
}
})
}
render(){
//...
}
}
Die Funktion clear vor aufgerufen wird die Komponente abgehängt. Aber der Timer ist in einer asynchronen Funktion, und es beginnt erneut, nachdem ich eine Antwort vom Server erhalten habe. Wie kann ich clearTimeout arbeiten?