【问题标题】:How to detect if a variable is not changing for a certain period of time?如何检测变量是否在一段时间内没有变化?
【发布时间】:2019-01-31 02:14:43
【问题描述】:

我想检测机器是否空闲 15 秒,如果是,则显示一个弹出窗口。当数据来自服务器时,我的变量会进行数学计算并更改值。所以我想要的是,如果这个变量在 15 秒内没有改变,就会弹出一个显示。

我已经为此尝试了 setTimeout。

            obj = JSON.parse(evt.data);

            if(obj.Addition=="0"){if(flag == 0){
               flag = 1;                    
               interval = setInterval(function(){
               $('div#popup2').show();
               }, 15000);                  
            }
            }

            else
            {
                clearInterval(interval);

                flag = 0;
            }

这种方式不起作用,因为当 Addition=1 时,它进入 else 条件,但是当机器空闲时,没有来自服务器的数据,所以技术上没有“obj.Addition”所以我想检查我正在更改的变量像 smallCount ..如果这个变量增加然后弹出显示

【问题讨论】:

  • 尝试在您的情况下删除 =="0"
  • 然后根本没有弹出窗口
  • obj.Addition 的默认值是多少?
  • 没有给出默认值。从服务器没有给出默认值..在开始时将其发送为 o ,然后如果用户添加某些内容,则发送 Addition=1

标签: jquery html websocket


【解决方案1】:

我通过清除同一循环内的间隔来解决它,并在下一个条件中再次添加 seInterval 这样它会首先 clearoutInterval 然后再次设置 Interval 等等

            if(obj.Addition=="0")
            {
                console.log(obj.Addition);
                clearInterval(interval);

                if(flag == 0){
                    flag = 1;                    
                interval = setInterval(function(){
                    $('div#popup2').show();

                }, 25000);                  
                }
            } 

            else 
            {
                console.log(obj.Addition);

                clearInterval(interval);
                interval = setInterval(function(){
                    $('div#popup2').show();

                }, 25000);       
                flag = 0;
            }

【讨论】:

    猜你喜欢
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多