Verwenden einer Funktion, die eine Kette von Aufrufen zu einem Ergebnis führt, das mehrmals in einer Angular-Vorlage angefordert wird. Während dieser Anfragen ändert sich das Ergebnis nicht, so dass der Mehraufwand für die zusätzlichen Anrufe innerhalb der Funktion nicht notwendig ist.Kombinieren von _.memoize und _.throttle, um Funktionsaufrufe einzuschränken und ein Ergebnis innerhalb eines Zeitfensters zwischenzuspeichern?
Ist es möglich, eine gedrosselte Funktion zu erstellen, die das gleiche Ergebnis innerhalb einer bestimmten Wartezeit zwischenspeichert und zurückgibt?
Entlang der Linien des vereinfachten Beispiels unten.
var throttleCache = _.memoizeThrottle(function() {
return _.now();
}, 100);
_.delay(throttleCache, 0); // now + 0ms
_.delay(throttleCache, 10); // now + 0ms
_.delay(throttleCache, 99); // now + 0ms
_.delay(throttleCache, 101); // now + 101ms
_.delay(throttleCache, 150); // now + 101ms
Soweit ich verstanden habe, auf unbestimmte Zeit _.memoize
Caches Ergebnisse auf den Argumenten basiert, kann nicht sehen, wie man automatisch diesen Cache in Abständen zu spülen. Und _.throttle
und _.debounce
lösen nur die Funktion innerhalb der festgelegten Einschränkungen aus, geben aber nicht die Ausgabe der enthaltenen Funktion zurück.
überprüfte ich die Quelle für Underscore.js und diese zwei Funktionen bereits das letzte berechnete Ergebnis zurück, so wie Sie wollen. – lastoneisbearfood