重复满足条件时如何调用二次功能

时间:2016-04-09 11:48:10

标签: javascript jquery ajax if-statement conditional-statements

功能性:

当检测到并满足初始条件时,将调用辅助功能。因此,如果'(condition = true)',将调用辅助函数。但是,只应调用辅助函数一次,直到条件更改为false。

因此,正确的行为是: 当初始条件仍为“真”时,辅助功能不应该保持呼叫,正确的行为是,当条件=真时,应该只调用一次'当' condition = false'时,没有任何反应,当&条件=真时,下一个实例就会出现。再次,辅助函数将再次被调用一次,直到condition = false。

在这个时间点,我所做的是,在每个条件=真'时,它总是会调用辅助函数=> location.reload();,这很开心错误的行为。因此,如果' condition = true'如果是真的10秒钟,它会在10秒内每秒刷新一次。

因此,在这一点上,我仍然坚持如何只调用“location.reload()'只有当' condition = true'时,它才会刷新一次页面。

因此,在' condition = true'

时,我需要有关如何只检测一次并调用一次函数的帮助/指导
 var isInterrupt =false;
//Interval to keep asking the backend for sensor value: Hence, if sensor value returns a '1', it will call the function interrupt()
    setInterval(getFeedback,100);

    function getFeedback()
    {
        ajax_getArduinoFeedback("flash.do", "formType=getArduinoFeedback");
    }

    //Method call when data from Arduino is "1"
    function interrupt(){

        //location.reload();

        if (isInterrupt == false)
        {
            isInterrupt = true;
            //When data="1" at the arduino board, Video will reload and start playing

            location.reload();

        }
        isInterrupt=false;
    }

1 个答案:

答案 0 :(得分:0)

您必须在会话,Cookie或localStorage中保留isInterrupt的记录。

在脚本的开头,它会是这样的:

var isInterrupt = localStorage.getItem("isInterrupt"); /* false by default */

一旦您更改了脚本中的值,也请在localStorage中更改它:

localStorage.setItem("isInterrupt", "anything");

或只是删除/取消设置:

localStorage.removeItem("isInterrupt");

所以,完整的例子就是这样:

var savedInterrupt = localStorage.getItem("savedInterrupt");
setInterval(getFeedback,100);

function getFeedback() {
    ajax_getArduinoFeedback("flash.do", "formType=getArduinoFeedback");
}

function interrupt(){
    if( isInterrupt != savedInterrupt ) {
        localStorage.setItem("savedInterrupt", isInterrupt);
        location.reload();
    }
}

根据需要,您可能需要使用sessionStorage,它仅持续一个会话。两种方法都相同。

  

虽然存储在localStorage中的数据没有设置过期,但存储了数据   在页面会话结束时,sessionStorage被清除