Вот ссылочка:
https://habrahabr.ru/post/60957/
Лучше прочитать эту статейку, чем я буду здесь расписывать реализацию
Для дебоунсинга есть много готовых библиотек, можно просто открыть на гитхабе или npm, входит в стандартный пакет underscore.js и lodash.js (разницы между ними не знаю, как по мне одно и тоже)