如何检测变量是不是在一段时间内没有变化?

Posted

技术标签:

【中文标题】如何检测变量是不是在一段时间内没有变化?【英文标题】: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 【参考方案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;
            

【讨论】:

以上是关于如何检测变量是不是在一段时间内没有变化?的主要内容,如果未能解决你的问题,请参考以下文章

串口屏开发之历史曲线控件的使用总结——如何将传感器采集的温度数据在一段时间内的变化曲线显示在屏幕上

串口屏开发之历史曲线控件的使用总结——如何将传感器采集的温度数据在一段时间内的变化曲线显示在屏幕上

如何检查 Flutter 中的 Future 变量是不是发生了变化? [复制]

如何有效地检测 Python 3 中变量的变化?

在 atmel 工作室中观察状态随时间的变化?

检测线程内的布尔值变化