Ich versuche, eine Debounce-Funktion zu implementieren, die mit einem Versprechen in Javascript funktioniert. Auf diese Weise kann jeder Anrufer das Ergebnis der entprellten Funktion mit Hilfe eines Versprechens konsumieren. Hier ist das Beste, was ich in der Lage gewesen, um mit so weit:Debounce-Funktion mit Versprechen implementiert
function debounce(inner, ms = 0) {
let timer = null;
let promise = null;
const events = new EventEmitter(); // do I really need this?
return function (...args) {
if (timer == null) {
promise = new Promise(resolve => {
events.once('done', resolve);
});
} else {
clearTimeout(timer);
}
timer = setTimeout(() => {
events.emit('done', inner(...args));
timer = null;
}, ms);
return promise;
};
}
Idealerweise möchte ich an dieser Nutzenfunktion implementieren ohne auf EventEmitter eine Abhängigkeit der Einführung (oder meine eigene Basisversion EventEmitter Umsetzung) , aber ich kann mir keinen Weg dazu vorstellen. Irgendwelche Gedanken?
wie wird 'debounce' Funktion verwendet werden, zu gehen? – Aprillion
Was ist "inner"? – thefourtheye
@Aprillion Es wird als Standardentprellfunktion verwendet, wie die Entprellfunktion von [lodash] (https://lodash.com/docs#debounce), außer dass die Anrufer Zugriff auf den Rückgabewert des inneren haben sollen Funktion über ein Versprechen. Beantwortet das deine Frage? Ich kann weiter ausholen, wenn nicht. – Chris