Как сделать задержку на нажатие кнопки? JS
Хочу сделать так, чтобы событие, срабатывающее при нажатии клавиши Пробел, не срабатывало, если я нажимаю на клавишу чаще 1 раза в секунду.
document.onkeypress = function (event) {
let key = event.keyCode || event.charCodel;
if (event.key == ' ') {
shootUp(0);
}
}
Ответы (3 шт):
Автор решения: Igor
→ Ссылка
let timer;
document.onkeypress = function(event) {
if (!timer && event.key == ' ') {
console.log(0);
timer = setTimeout(() => timer = clearTimeout(timer), 1000);
}
}
Автор решения: Vadim
→ Ссылка
const sleep=(ms)=>new Promise((r)=>setTimeout(r, ms));
let spc = true;
document.onkeypress=async({keyCode})=>{
if(spc === true && keyCode === 32){
spc = false;
await sleep(1000);
console.log('space hit');
shootUp(0);
spc = true;
}
};
Нормальный код принятого ответа
let timer;
document.onkeypress=({keyCode})=>{
if(!timer && keyCode === 32){
console.log(0);
timer = setTimeout(()=>(timer = clearTimeout(timer)), 1000);
}
};
Автор решения: Давид Манжула
→ Ссылка
let lastSpacePress;
window.addEventListener("keypress", function(event) {
if (event.key === " ") {
if (lastSpacePress > Date.now() - 1000) {
return;
}
lastSpacePress = Date.now();
console.log("SPACE HIT");
}
});