所以,如果你按住一个键,它会:
- 首先输入键
- 等待
500ms
- 重复输入键
或者像这样:
a a a a a a ....
| | |
0 500 1000
我想执行一个代码,每x毫秒执行一个函数
我现在有这个:
var flag = true;
document.body.addEventListener("keydown", function(){
if(flag){
flag = false;
//code
setTimeOut(function(){flag = true}, 500);
}
})
但显然这只适用于500ms
或更多的区间。如果我想要一个100ms
区间,我该怎么做?
这将在按下一个键时每100毫秒运行一次tick函数:
var intervalID;
function tick() {
// code, for example:
document.body.innerHTML += ".";
}
document.addEventListener("keydown", function(){
if (!intervalID) intervalID = setInterval(tick, 100);
});
document.addEventListener("keyup", function(){
clearInterval(intervalID);
intervalID = undefined;
});
如果你想一直执行这个函数,你不需要保留interval ID,也不需要keyup处理程序。
https://jsfiddle.net/thsk1dpp/