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.
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