Debouncing - это обертка для любой функции, вызовы которой должны происходить только после заданного периода с момента последнего обращения к debouncing. Например debouncing(todo, 1000) должно запускать функцию todo по истечении 1000 миллисекунд с момента последнего вызова debouncing. Но с важной особенностью:
Если запрос на выполнение функции (todo) поступают чаще, чем раз в период (1000), то последний запрос перезаписывает предыдущий. Т.е. актуальным всегда остается только один запрос, котоый в итоге и будет выполнен.
PS - подобная обертка для функции является паттерном "Декоратор". См. паттерны в программировании
Пример debouncing в библиотеке lodash
HTML <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"> <script> JS function updateData () { ...} window.addEventListener('scroll', _.debounce(updateData, 100))