Agitar
El concepto: una devolución de llamada que se activa en caso n segundos, y luego, si esto se ha disparado en n segundos, y luego volver a tiempo.
Ejemplo: Si alguien en el ascensor, el ascensor comenzará después de 10 segundos, a continuación, si alguien en el ascensor, y tenemos que esperar 10 segundos antes de la salida.
Las ideas: el cierre mediante el mantenimiento de una variable, si esta variable representa el tiempo ha comenzado, antes de la hora de inicio si se ha vaciado el temporizador para el tiempo de reinicio.
la función de supresión de rebotes (fn, tiempo) { dejar que el temporizador = nula ; devolver la función () { deje de contexto = esta vamos a args = argumentos si (temporizador) { clearTimeout (temporizador); h = nulo ; } temporizador = setTimeout ( función () { fn.apply (contexto, args) }, hora) } } window.onscroll = antirrebote ( función () { console.log ( '触发:' + nueva fecha () getTime ().); }, 1000)
estrangulación
Ejemplo: Tiempo de reutilización en el juego, no importa cuántas veces se presiona, las habilidades sólo puede ser activado de nuevo después de una buena refrigeración
función del acelerador (fn, tiempo) { dejó canRun = verdadero ; retorno de la función () { si (canRun) { fn.apply ( este , argumentos) canRun = false setTimeout ( función () { canRun = verdadero }, hora) } } } window.onscroll = acelerador ( función () { console.log ( '触发:' + nueva fecha () getTime ().); }, 1000)