Если я правильно понимаю, проблема, которую вы испытываете, вызвана событием прокрутки, вызванным браузером несколько раз.то, что вы можете сделать, чтобы избежать этих больших накладных расходов, это реализовать простой механизм отладки, чтобы избежать вызова одного и того же API несколько раз в течение определенного интервала.
что-то вроде:
function debounce(fn, debounceTime = 500) {
let timeout = -1;
const currentScope = this;
return function (...args) {
clearTimeout(timeout);
timeout = setTimeout(fn.bind(currentScope, ...args), debounceTime);
}
}
, а затем вызватьВаша loadData
функция
const softLoadData = debounce(loadData);
в этот момент ваша новая функция softLoadData
не будет вызываться более одного раза в интервале 500 мс (который вы можете выбрать) в соответствии с вашими потребностями.