Подчеркивание отладки при вызове нескольких раз

57
4

Вызов _.debounce() заставляет функцию _.debounce() несколько раз, а не один раз после задержки. Как я могу заставить функцию в _.debounce() один раз после указанной задержки? Моим вариантом использования является выполнение запроса AJAX после того, как пользователь прекратил печатать.

Например, при вводе на ввод сообщение будет появляться на консоли через 1 секунду. В моем примере вы увидите несколько сообщений (по одному для каждой введенной буквы). Как мне изменить свой код, чтобы увидеть только одно сообщение?

https://plnkr.co/edit/3dGm55ZFqWe4V59HLgoC

function onKeyUp() {
_.debounce(() => {
console.log('foo');
}, 1000)();
}
<input onkeyup="onKeyUp()" />

спросил(а) 2018-03-20T19:05:00+03:00 2 года, 7 месяцев назад
1
Решение
108

Вы создаете новую функцию debounced для каждого события keyup. Вместо этого вам нужно создать его один раз и использовать эту функцию внутри (или вместо) обработчика события onKeyUp.

var handler = _.debounce(() => {
console.log('foo');
}, 1000)

function onKeyUp() {
handler();
}

<script src="http://underscorejs.org/underscore-min.js"></script>
<input onkeyup="onKeyUp()" />

ответил(а) 2018-03-20T19:42:00+03:00 2 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема