Ich suche nach einem einfachen Gas in JS. Ich weiß, dass Bibliotheken wie lodash und unterstreichen es haben, aber nur für eine Funktion ist es übertrieben, eine dieser Bibliotheken einzuschließen.
Ich habe auch geprüft, ob jquery eine ähnliche Funktion hat - konnte nicht finden.
Ich habe einen funktionierenden Gashebel gefunden , und hier ist der Code:
function throttle(fn, threshhold, scope) {
threshhold || (threshhold = 250);
var last,
deferTimer;
return function () {
var context = scope || this;
var now = +new Date,
args = arguments;
if (last && now < last + threshhold) {
// hold on to it
clearTimeout(deferTimer);
deferTimer = setTimeout(function () {
last = now;
fn.apply(context, args);
}, threshhold);
} else {
last = now;
fn.apply(context, args);
}
};
}
Das Problem dabei ist: Es löst die Funktion nach Ablauf der Drosselzeit erneut aus. Nehmen wir also an, ich habe eine Drosselklappe gedrückt, die alle 10 Sekunden beim Drücken der Taste ausgelöst wird. Wenn ich zweimal die Taste drücke, wird der zweite Tastendruck nach 10 Sekunden immer noch ausgelöst. Ich möchte dieses Verhalten nicht.