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