Yo lo haría así:
Código Javascript
:
Ver originalvar control = true,
fn = function(message){
if (!control)
setTimeout(function(){
console.log(message);
}, 2000);
else
console.log(message);
control = false;
};
document.addEventListener("keyup", function(e){
var key = event.keyUp|| event.which;
switch (key){
case 37:
fn("Izquierda");
break;
case 38:
fn("Arriba");
break;
case 39:
fn("Derecha");
break;
case 40:
fn("Abajo");
break;
}
}, false);
Primero, defino una variable con la cual llevaré un control para obtener lo que buscas y que iniciará con el valor booleano
false. Una vez que pulsemos una tecla, obtengo el código de ésta y según corresponda al valor de cualquiera de las teclas de dirección (las flechas), ejecuto una función a la cual le paso el nombre de la dirección como argumento, pero tú puedes ejecutar cualquier otra función en su lugar.
En esta función, evalúo el valor de la variable
control; si su valor es
false, muestro el mensaje con el nombre de la dirección luego de 2000 milésimas de segundo que equivalen a dos segundos, caso contrario, muestro inmediatamente el mensaje y cambio el valor de
control a
false. Como el valor inicial de esta variable es
true, la primera vez que se pulse una tecla direccional, el mensaje se mostrará inmediatamente y cambiará el valor de
control a
false y para las siguientes veces, retraso la muestra del mensaje utilizando el método
setTimeout, el cual ejecuta una función después de un tiempo determinado, que en este caso son 2000 milésimas de segundo.
Saludos