Используйте интервал !
Очистить его при помощи мыши
var fireRate = 20,
fireInterval = null;
function fire() {
console.log("BAM!");
}
function startFire() {
fire();
fireInterval = setInterval(fire, 1000/fireRate );
}
function stopFire() {
clearInterval(fireInterval);
}
document.addEventListener("mousedown", startFire);
document.addEventListener("mouseup", stopFire);
html, body{height:100%;}