如何在Javascript中等待2秒输入

时间:2014-01-15 22:50:45

标签: javascript setinterval

我正在使用javascript编程电视遥控器,如果用户再按一次1(1个频道或11个频道或111个频道),用户按下数字1功能需要等待2秒。

我写了这个函数,但它只显示11111111 in循环这里是我的代码:

 function chChannel(pressed) {
     setInterval(function () {
         if (lengthCS < 3) {
             inputChannel += pressed;
             lengthCS = inputChannel.length;
         }
     }, 2000);

     // call function to change channel using variable value inputChannel for ex. 011
 };

有任何解决方案吗?

因此,函数需要等待2秒,然后在2秒之后,它会在变量InputChannel中获取被按下数字的值,这样我就可以调用函数将值从Value InputChannel更改为数字。

3 个答案:

答案 0 :(得分:1)

听取按键并计算它们是一个记录良好的事情,但是,在实际主题的上下文中,我会说,没有正确的等待方法,除了用超时调用设置为函数来结束脚本反复检查,等待的时间是否已经过去,如果不是则自动触发,例如,使用setTimeout。 100ms,如果是,则调用继续主程序的函数。 然后,等待线程还可以检查和计数按键,例如。在全局变量中作为基本解决方案。

答案 1 :(得分:0)

使用“setTimeout”。

var Timer;

function chChannel(pressed) {
    clearTimeout(Timer);
    Timer = setTimeout(function () {
        if (lengthCS < 3) {
            inputChannel += pressed;
            lengthCS = inputChannel.length;
        }
    }, 2000);

    // call function to change channel using variable value inputChannel for ex. 011
};

答案 2 :(得分:0)

你是否考虑过使用下划线的去抖功能,会让事情变得更加简单。

http://underscorejs.org/#debounce

可能是这样的事情可能有用,在电话上无法自己测试......

var inputChannel;

 function chChannel(pressed) {
     if (inputChannel <= 3) {
         inputChannel += pressed;
     } 
     else {
        inputChannel = pressed;
    }
    _.debounce(someFunction, 2000);
 };

只要debounce在延迟时间内被调用就不会执行,只会在延迟后执行一次。