簡體   English   中英

React Ajax setInterval內存泄漏

[英]React Ajax setInterval Memory leak

我查看並嘗試了其他所有問題。 仍然無法解決我的內存泄漏。 這是代碼。 本質上,它從服務器獲取JSON文件並相應地更新表。 它每5秒鍾循環一次AJAX調用。

內存泄漏發生在此AJAX調用中。 任何幫助都會很棒。

LoadDataTable:function(){

 $.ajax({
  url: "***************************.json",
  dataType: 'json',
  cache: false,
  timeout: 5000,
  success: function(data) { 
   this.setState({temp1:data[2].field3}),
   this.setState({temp2:data[2].field5}),
   this.setState({temp3:data[2].field25}),
   this.setState({temp4:data[2].field26});

     if(data[2].field3 > 9 || data[2].field5 >9||data[2].field5>9 ||data[2].field26>9){
        document.location.href='#/'
   }
   else{
       //console.log("Stopped playing");
   }
   setTimeout(this.LoadDataTable, 5000);


}.bind(this),
  error: function(request, status, err) {

    //request.abort();
    console.log(request);
    setTimeout(this.LoadDataTable, 5000);

  }.bind(this),

 })

},
componentDidMount: function() {
    this.LoadDataTable();
    //this.setInterval(this.LoadDataTable, 100);// Call a method on the mixin
},

嘗試將成功和錯誤功能移到這樣的命名函數中:

$.ajax({
  url: "***************************.json",
  dataType: 'json',
  cache: false,
  timeout: 5000,
  success: this.successTimeout,
  error: this.errorTimeout,
})

componentDidMount: function() {
  this.LoadDataTable();
  //this.setInterval(this.LoadDataTable, 100);// Call a method on the mixin
},

successTimeout(data) { 
  this.setState({temp1:data[2].field3}),
  this.setState({temp2:data[2].field5}),
  this.setState({temp3:data[2].field25}),
  this.setState({temp4:data[2].field26});

  if(data[2].field3 > 9 || data[2].field5 >9||data[2].field5>9 ||data[2].field26>9){
     document.location.href='#/'
  }
  else{
    //console.log("Stopped playing");
  }

  setTimeout(this.LoadDataTable, 5000);
}.bind(this),

errorTimeout(request, status, err) {
  //request.abort();
  console.log(request);
  setTimeout(this.LoadDataTable, 5000);
}.bind(this)

另外,您可能要考慮使用fetch API 只要確保包含polyfill即可實現瀏覽器兼容性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM