Реализовать функцию, которая принимает функцию и время в миллесекундах и следит за тем, чтобы переданная функция была вывана только в том случае, если с предыдущего вызова прошло определенное время, иначе функция не должна делать ни чего сразу, а только назначать выполнение функции по истечении определенного времени.
function greeting(name) {
console.log(`Greetings, ${name}!=D`);
}
greeting("Gloin");
greeting("Dwalin");
greeting("Thorin");
// Приветствует всех гномов по очереди.
const debouncedGreeting = debounce(greeting, 200);
debouncedGreeting("Gloin");
debouncedGreeting("Dwalin");
debouncedGreeting("Thorin");
// Приветствует только Торина.
Контракт функции должен быть таким.
/**
* @param {function} func Декорируемая функция.
* @param {number} threshold Время в миллесекундах, которое должно пройти с последнего вызова.
* @returns {function} Функция, которая выполняется только если с момента последнего вызова
* прошло определенное в {@code threshold} количество времени.
*/
function debounce(func, threshold) { /* ... */ }
Реализовать функцию, которая принимает функцию и время в миллесекундах, и следит за тем, чтобы функция, выполнялась не чаще, чем раз в определенное время. То есть, функция выполняется только если после предыдущего выполнения прошло определенное время. Часть вызовов при этом просто игнорируется.
function greeting(name) {
console.log(`Greetings, ${name}!=D`);
}
greeting("Gloin");
greeting("Dwalin");
greeting("Thorin");
// Приветствует всех гномов по очереди.
const throttledGreeting = throttle(greeting, 200);
throttledGreeting("Gloin");
throttledGreeting("Dwalin");
throttledGreeting("Thorin");
// Приветствует только Глоина.
Контракт функции должен быть таким.
/**
* @param {function} func Декорируемая функция.
* @param {number} threshold Время в миллесекундах, которое должно пройти с последнего вызова.
* @returns {function} Функция, которая выполняется только если с момента последнего вызова
* прошло определенное в {@code threshold} количество времени иначе вызов игнорируется.
*/
function throttle(func, threshold) { /* ... */ }