在按下togglebutton时执行超时功能

时间:2017-09-05 08:35:38

标签: javascript timeout do-while togglebutton

我想运行超时为2000毫秒的函数。该功能应该在按下toggleButton时运行。

当我运行此功能时,我的CPU爆炸:

do {
  setTimeout(function () {
    me.pushMockData();
  }, 2000);
}
while (liveButton.getPressed() != false);

4 个答案:

答案 0 :(得分:1)

你的CPU爆炸,因为你再次创建了Timeout,按下按钮时,你的循环中一次又一次非常快。如果你想每2秒运行一次你的功能:

  • 您应该测试是否按下按钮。
  • 使用setInterval
  • setInterval内,检查按钮是否仍然按下,如果没有,clearInterval

https://www.w3schools.com/jsref/met_win_setinterval.asp

如果您只想在2秒后激活您的功能,请在if。

中使用setTimeout

答案 1 :(得分:0)

这是因为你经常在while循环中调用setTimeout函数。

var timeout;

if (liveButton.getPressed())
{
    if (typeof timeout !== 'undefined') {
        timeout = setTimeout(function () {
                      me.pushMockData();
                  }, 2000);
    } else {
        clearTimeout(timeout);
    }

}

答案 2 :(得分:0)

你正在解决这个问题,保持简单并将事件监听器附加到按钮并调用setTimeout。

<强> HTML

<button id="my_button">Click Me</button>

<强>的JavaScript

document.getElementById('my_button').addEventListener('click', function () {
    setTimeout(function () {
        alert('Clicked!');
    }, 2000);
});

<强>的jsfiddle

Live Example

答案 3 :(得分:0)

如果您可以捕获onPress和onRelease事件,那么如果您执行以下操作会更好

onPress
var myTimeout = setTimeout( ... , 2000 )

onRelease
clearTimeout(myTimeout)

示例:https://jsfiddle.net/jfefL4oo/1/