我想以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/