1. 程式人生 > >關於js兩個函式定時執行產生的衝突問題

關於js兩個函式定時執行產生的衝突問題

問題產生
需求:需要在一個頁面內時時分別讀取兩個輸出日誌進行監控,在監控日誌一是定時呼叫自身以達到不斷重新整理資料的目的,使用定時器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); }