在按下toggletton时,请与超时函数



我想以2000毫秒的超时运行功能。按下toggleButton时,该功能应仅运行。

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

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

您的CPU爆炸是因为按下按钮时,您会一次又一次地在循环中创建超时。如果您想每2秒运行一次功能:

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

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

如果您只想稍后2秒钟工作,请在内部使用setTimeout

您要解决这一切,请保持简单,然后将事件侦听器附加到按钮并致电SetteMeT。

html

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

javascript

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

jsfiddle

实时示例

这是因为您在段循环中不断调用setTimeout功能。

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

如果您可以捕获OnPress和OnRelease事件,那么如果您遵循

,那会更好
onPress
var myTimeout = setTimeout( ... , 2000 )
onRelease
clearTimeout(myTimeout)

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

相关内容

  • 没有找到相关文章

最新更新