Когда функция вызывается снова и снова, и мы хотим, чтобы эта функция вызывалась через некоторое время, но не регулярно, это достигается путем устранения дребезга. Мы можем добиться устранения дребезга с помощью setTimeOut.
Давайте рассмотрим пример устранения дребезга в Javascript. Мы возьмем в качестве примера панель поиска и хотим, чтобы результат в раскрывающемся списке появлялся через 1 секунду, когда пользователь прекращает печатать, а не после каждой введенной буквы.
Пример из реальной жизни: когда вы печатаете ноутбук, затем останавливаетесь, затем в раскрывающемся списке отображается ноутбук, а не так, как вы показываете L…
Код:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <input type="text" name="searchbar" id="searchbar" onchange="debounceEffect()" placeholder="search bar"> </head> <body> <script> var counter = 0 function giveOptions(){ console.log("aaya h", counter++); } function debounce(callback, duration){ let timer; return function(...args){ // in case user start typing before 1 sec i.e 0.7 sec then clear the timer and start it again if(timer) clearTimeout(timer); timer = setTimeout(() => { callback() }, duration); } } const debounceEffect = debounce(giveOptions, 1000) </script> </body> </html>