js implementa una función anti-vibración simple, que puede realizar anti-vibración según el tiempo entrante

Aquí hay un ejemplo simple: antivibración basado en el tiempo de entrada t:

function debounce(func, t) {
  let timeoutId;

  return function (...args) {
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => {
      func.apply(this, args);
    }, t);
  };
}

Esta función recibe dos parámetros: funcla función que debe ser antivibración ty el intervalo de tiempo antivibración (en milisegundos).

Internamente, utilizamos una variable timeoutIdpara almacenar setTimeoutel valor de retorno de. Siempre que se llama a la función anti-vibración, primero borramos el temporizador anterior (si lo hay), luego creamos un nuevo temporizador y ejecutamos la función entrante después de un retraso de t milisegundos.

El uso de esta función para evitar rebotes garantiza que solo se ejecutará la última llamada dentro del intervalo de tiempo especificado y que se cancelarán las llamadas anteriores.

Por ejemplo, use debouncela función para rechazar una función de devolución de llamada:

function myCallback() {
  console.log('Debounced callback');
}

const debouncedCallback = debounce(myCallback, 200);

// 调用防抖函数
debouncedCallback(); // 200ms 后输出 "Debounced callback"
debouncedCallback(); // 取消前一次调用,重新计时 200ms
debouncedCallback(); // 取消前一次调用,重新计时 200ms

Supongo que te gusta

Origin blog.csdn.net/weixin_48674314/article/details/130774221
Recomendado
Clasificación