Рассмотрите возможность регулирования или устранения помех.Оба реализованы в lodash
вспомогательной библиотеке.Вы можете использовать с React.
Регулирование обеспечивает максимальное количество вызовов функции со временем.Например, «выполнять эту функцию не чаще, чем раз в 100 миллисекунд».
Снятие запрета принудительно запрещает повторный вызов функции до тех пор, пока определенное время не пройдет без ее вызова.Например, «выполнять эту функцию, только если прошло 100 миллисекунд без вызова.»
const throttledHandlePingRange = _.throttle(handlePingRange 100);
const debouncedHandlePingRange = _.debounce(handlePingRange, 100);
Если использование lodash не является опцией, вы можете реализовать ее самостоятельно:
function debounce(fn, delay) {
let timer = null;
// closure function that has access to timer
return function() {
// get the scope and parameters of the funct via 'this' and 'arguments'
let that = this;
let args = arguments;
// if event is called, clear the timer and start over
clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(that, args);
}, delay);
}
}