Anti-vibración y estrangulamiento

Rebote

Anti-vibración es activar una gran cantidad de lo mismo en un corto período de tiempo, y solo se activa una vez;

function debuonce(fn, delay){
    
    
  let timer = null;
  return function() {
    
    
    if(timer) {
    
    
		clearTimeout(timer) // 将上一次的清除掉
	}
	timer = setTimeout(fn, delay); // 然后重新计时  
  }
}

transferir

function log(){
    
    
	console.log(2)
}

window.onscroll = debounce(log, 2000)

Acelerador

Si el evento de desplazamiento se activa de forma continua dentro de un tiempo limitado, mientras se mantenga activo, nunca generará la salida console.log (2)

Si la demanda es imprimir 2 a intervalos, pero no con tanta frecuencia, se utiliza la limitación.

function throttle(fn, delay){
    
    
	let valid = true;
	return function(){
    
    
     if (!valid) {
    
     // 休息时间
		return false;
	  }
	  // 工作时间了
	  valid = false;
	  setTimeout(() => {
    
    
		valid = true;
		fn();	
	  }, delay)
    }

}

function log(){
    
    
	console.log(2)
}

window.onscroll = throttle(log, 2000)
// 这样就是 持续滚动,但是会间隔2秒输出

Supongo que te gusta

Origin blog.csdn.net/Beth__hui/article/details/114047903
Recomendado
Clasificación