我想运行超时为2000毫秒的函数。该功能应该在按下toggleButton
时运行。
当我运行此功能时,我的CPU爆炸:
do {
setTimeout(function () {
me.pushMockData();
}, 2000);
}
while (liveButton.getPressed() != false);
答案 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 强>
答案 3 :(得分:0)
如果您可以捕获onPress和onRelease事件,那么如果您执行以下操作会更好
onPress
var myTimeout = setTimeout( ... , 2000 )
onRelease
clearTimeout(myTimeout)