Hallo dedlfix,
Die Implementation gefällt mir nicht richtig.
Da bin ich ganz bei Dir, aber was ist die Alternative? Zwei verschiedene Debouncer? Eine Weiche, die je nach Wert von immediate unterschiedliche Funktionen bindet? Der Name `immediate' gefällt mir ohnehin nicht...
function debounce(func, wait, useFirstCall = false) {
var timeout, context;
if (onFirstCall) {
return function(...args) {
context = this;
if (!timeout)
func.apply(context, args);
clearTimeout(timeout);
timeout = setTimeout(() => timeout = null, wait);
}
} else {
return function(...args) {
context = this;
clearTimeout(timeout);
timeout = setTimeout(() => {
timeout = null;
func.apply(context, args);
}, wait);
}
}
};
Das ist jetzt noch ein bisschen modernisiert, mit Lambdas und Rest-Parameter, aber gefallen tut mir das auch nicht. Und mir fehlt auch noch ein Feature: eine Mindestfrequenz, mit der die Funktion aufgerufen wird.
Rolf
--
sumpsi - posui - obstruxi
sumpsi - posui - obstruxi