jquery clearInterval似乎没有清除

yrwegjxp  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(106)

我有一个函数,其中有一个间隔,我想在每次运行函数时清除/重置。
该函数在间隔中再次被调用,但也在按钮按下时被调用,因此当间隔再次开始时,如果按钮也被按下以调用该函数,则它开始多次运行它。

function call() {
    var live_chat_interval;
    clearInterval(live_chat_interval);

    $.ajax({
        url: '/section/tickets',
        data: {
            "action": "ticket_details",
            "ticketnumber": '<?php echo $ticket["ticketnumber"]; ?>'
        },
        dataType: "json",
        type: "GET",
        success: function(data) {
            if(data.status == 'live_chat') {
                live_chat_interval = setInterval(function() {
                    console.log("refresh");
                    //call();
                }, 3000);
            }
        }
    });
}

字符串

j8yoct9x

j8yoct9x1#

这里不需要setInterval,使用setTimeout。另外,将超时ID放在函数外部,以便它可以在函数调用之间保持:

let timeout;

function call() {

  clearTimeout(timeout);

    $.ajax({
        url: '/section/tickets',
        data: {
            "action": "ticket_details",
            "ticketnumber": '<?php echo $ticket["ticketnumber"]; ?>'
        },
        dataType: "json",
        type: "GET",
        success: function(data) {
            if(data.status == 'live_chat') {
                timeout = setTimeout(function() {
                    console.log("refresh");
                    call();
                }, 3000);
            }
        }
    });
}

字符串

相关问题