Debounce для async функции
СреднееРеализуйте debounceAsync(fn, delay) - debounce для асинхронных функций.
Что такое debounce?
Это паттерн, который откладывает выполнение функции до тех пор, пока не пройдёт delay мс после последнего вызова. Используется для оптимизации поиска при вводе текста.
Требования:
- Откладывает выполнение функции на delay мс
- При повторном вызове отменяет предыдущий таймер и начинает заново
- Возвращает Promise с результатом последнего вызова
- Все pending вызовы резолвятся с результатом последнего
Пример использования:
const searchAPI = debounceAsync(async (query) => {
return await fetch(`/api/search?q=${query}`);
}, 300);
// Юзер печатает "hello"
searchAPI('h'); // отменён
searchAPI('he'); // отменён
searchAPI('hel'); // отменён
searchAPI('hell'); // отменён
searchAPI('hello'); // выполнится через 300ms
// Отправится только 1 запрос вместо 5!JavaScript•UTF-8
Run your code to see results.
Click the Run button above
Mobile view - please use desktop for better experience