У меня есть прослушиватель событий для событий прокрутки, который запускает функцию, ответственную за добавление элемента в область просмотра. Тот же самый прослушиватель событий прокрутки дросселируется, чтобы предотвратить ливень событий прокрутки (более управляемый). Библиотека, используемая для дроссельной заслонки, является throttle-debounce
. Проблема: дросселирование handlePageScroll
все, что содержится в этом методе (конечно).
Код:
componentDidMount() {
window.addEventListener('scroll', throttle(2000, this.handlePageScroll));
}
handlePageScroll = () => {
someFn() // logic for appending an element, does not need throttling
this.loadNextBatch(); // logic that actually needs to be throttled
};
Я пробовал дросселировать изнутри handlePageScroll
без успеха. Есть ли способ запустить две функции из прослушивателя событий? Заранее спасибо.
Вот решение, поддерживая состояние:
componentDidMount() {
let throttled = false
window.addEventListener('scroll', () => {
if (!throttled) {
throttle(2000, () => {
this.loadNextBatch()
throttled = false
})()
throttled = true
}
someFn()
})
}
addEventListener('scroll', throttle(2000, this.handlePageScroll))