關於js兩個函式定時執行產生的衝突問題
阿新 • • 發佈:2019-01-03
問題產生
需求:需要在一個頁面內時時分別讀取兩個輸出日誌進行監控,在監控日誌一是定時呼叫自身以達到不斷重新整理資料的目的,使用定時器setInterval,再點選日誌二進行監控時,日之一的定時呼叫會產生新的資料覆蓋日誌二
解決辦法
給定時執行設定個返回值,返回值宣告為全域性變數
var a;
var b;
function append(){
a= setInterval("append()",10000);
}
function append2(){
b= setInterval("append2()",10000);
}
在執行函式式時加入清除定時器任務
function append (){
clearInterval(b);
a= setInterval("append()",10000);
}
注:
最好不要使用setInterval,而用setTimeout的延時遞迴來代替interval。setInterval會產生回撥堆積,容易造成瀏覽器崩潰。
var a;
var b;
function append(){
clearTimeout(b);
a= setTimeout("append()",10000);
}
function append2(){
clearTimeout(a);
b= setTimeout("append2()" ,10000);
}