javascript - js腳本中定時器太多,衝突如何解決?
迷茫
迷茫 2017-06-06 09:53:37
0
1
1042

業務需要,在js腳本中,寫了多個定時任務,如下程式碼:

setTimeout(cron, 120000);//定时上传记录信息
setTimeout(start_init, 350000);

function cron() {
    $.post('cron.php', {state: 'cron'}, function(data) { });
    setTimeout(cron, 120000);
}

function start_init() {
    $.post('start_init.php', {state: 'start_init'}, function(data) { });
    setTimeout(start_init, 350000);
}

/**
* 这段是逻辑处理
**/
var clear_t;
document.onkeydown = function(e){  
    var ev = document.all ? window.event : e;
    if(ev.keyCode==13) {
        clearTimeout(clear_t);

        $.post('ajax.php', send_data, function(data) {
            var jsonRes = JSON.parse(data);
            if(jsonRes.status == 202) {
                /**业务代码块**/

            }else if(jsonRes.status == 200 || jsonRes.status == 2000) {
                /**业务代码块**/

            }else {
                /**业务代码块**/
            }
            clear_t = setTimeout(clear_content, 5000);
        }
    }
}

/**
 * 更改页面部分信息的方法
 */
function clear_content() {
    $("#username").text('******'); 
    $("#useroperations").text('******'); 
    $("#last_balance").text(0);
    $("#consum").text(0); 
    $("#now_balance").text(0);
    local_soc.emit('cum_num', 0);
}

如上述程式碼所示(程式碼最上面的兩個計時器沒有什麼特別意義,貼出來是為了說明這個腳本中定時器很多),js在腳本中用到了很多的計時器,那麼這些定時器,異步向伺服器發送請求的就不說了,就是更改頁面部分資訊clear_content方法這裡,有時候容易斷片兒,時不時的不會執行這段程式碼,請問像這樣的是由於多個定時器衝突造成的嗎?那麼應該如何避免這樣的問題呢?或如何改進這段程式塊?

對了,特別說明一下,捕捉滑鼠回車事件,也就是最下面的程式碼區塊執行的很頻繁,差不多3~5s就會執行一次。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(1)
仅有的幸福

https://zhuanlan.zhihu.com/p/...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板