Я ищу простой газ в JS. Я знаю, что такие библиотеки, как lodash и underscore, есть, но только для одной функции было бы излишне включать любую из этих библиотек.
Я также проверял, имеет ли jquery подобную функцию - не смог найти.
Я нашел один рабочий дроссель, и вот код:
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);
}
};
}
Проблема в том, что она запускает функцию еще раз по истечении времени газа. Итак, давайте предположим, что я нажал на газ, который срабатывает каждые 10 секунд при нажатии клавиш - если я нажму 2 раза, он все равно сработает при втором нажатии клавиш после 10 секунд. Я не хочу такого поведения.