javascript - 停止 JavaScript 间隔

标签 javascript setinterval

是否可以停止当前作为 setInterval 运行的函数?

这是我的代码:

这是我调用的函数

function pull_light_status (lights_array) {
    $.getJSON( "resources/php/getjson.php", function( json ) {
        var vera_obj = json;
        $.each(lights_array,function(myindex, myvalue){
        var id_del_object = myvalue - 1;
        var variable_del_id = vera_obj.devices[id_del_object].states[0].variable;
        var status_del_id;
        if (variable_del_id == "Status"){
            status_del_id = vera_obj.devices[id_del_object].states[0].value;
        }else{
            variable_del_id = vera_obj.devices[id_del_object].states[1].variable;
            status_del_id = vera_obj.devices[id_del_object].states[1].value;    
        }
        if (status_del_id == "1"){
            $("#light"+myvalue).attr("src","resources/img/on_toggle.png");                  
        } else {
            $("#light"+myvalue).attr("src","resources/img/off_toggle.png");  
        }
            console.log("ID: " + myvalue + ">>>>> " + variable_del_id + ">>>>> " + status_del_id);
    })
    })     
}

在主界面上,当我转到“客厅部分”时,我加载了 html 以及函数“pull_lights_status”,并且还设置了如下间隔

$("#livingroom").click(function(){
    $(".roomsdbl").hide();
    $(".rooms").hide();
    $("#roomwrapper").css("display","block");
    $("#roomwrapper").load("resources/data/livingroom.html",function() {       


        lights_array = [23,24,25,26];


        //load pull_light_status
        pull_light_status(lights_array);
        setInterval(function(){
            pull_light_status(lights_array);
        },10000);



            $(".closebutton").click(function(){  // Close button
            $("#roomwrapper").hide();
            $(".roomsdbl").show();
            $(".rooms").show();
            }); 
    }) 
}) 

这将每 10 秒更新一次我的灯的状态。我遇到的问题是,当我关闭该部分(实际上在使用 .closebutton 时隐藏)并且我转到另一个部分让我们说主房间正在加载相同的 pull_light_status 功能,然后每 10 秒它会去两次获取状态每次我关闭和打开一个部分,即使它是相同的,它也会添加另一个 setInterval。

当我单击 Living rooom 上的 .close 按钮​​以停止 pull_light_status 在后台运行并且在加载房间时只加载一个时,我想要什么。

不知道我解释的对不对。我的编码能力不是很好,所以代码可能会困惑和重复,我在学习过程中

亲切的问候,

最佳答案

在你使用setInterval之后你可以使用clearInterval来停止它

var pullInterval = setInterval(fn, 10000);

// some later time ...
clearInterval(pullInterval);

在任何时候,如果您希望重新开始间隔,只需再次使用 setInterval

关于javascript - 停止 JavaScript 间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208427/

相关文章:

javascript - 如何使用 JavaScript/jQuery 根据表中的值更改 td 背景颜色?

JavaScript代码在IE8中不起作用

javascript - JavaScript中有没有像c++的cin>>这样的简单输入命令?

javascript - 简单的 Javascript 或 jQuery clearInterval 问题

javascript - 调用 SetInterval 函数表达式

Javascript时刻日期转换和格式问题

javascript - 如何在 javascript 函数中使用 Razor 值?

javascript - 使用 SetInterval 在 Javascript Canvas 上刷新游戏出现故障/闪烁

Javascript setInterval 连续多行

javascript - 运行 setInterval 几次,然后暂停几秒钟