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