JavaScript: come riuscire a gestire azioni ripetute su eventi ad invocazione continua

Le azioni ripetute in JavaScript possono creare problemi quando vengono associate ad eventi continui.

JavaScript di Gabriele Romanato

Le azioni ripetute in JavaScript possono creare problemi quando vengono associate ad eventi continui.

Possiamo definire la seguente funzione:


'use strict';

const debounce = ( func, wait, immediate ) => {
	let timeout;
	return () => {
		let context = this, args = arguments;
		const later = () => {
			timeout = null;
			if ( !immediate ) { 
				func.apply( context, args );
			}
		};
		let callNow = immediate && !timeout;
		clearTimeout( timeout );
		timeout = setTimeout( later, wait );
		if ( callNow ) { 
			func.apply( context, args );
		}
	};
};

Esempio d'uso con l'evento scroll:


window.addEventListener( 'scroll', () => {
	
	debounce(() => {
		//...	
	}, 250);
	
}, false);

Commenti