Я взял реализацию функции debounce из блога Дэвида Уолша.Вот тело этого:
function debounce(func, wait, immediate) {
var timeout;
return function executedFunction() {
var context = this;
var args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
Теперь я использую эту функцию debounce в элементе ввода html следующим образом:
<input type="text" id="conversation_filter_recent_messages" oninput="debounce(Conversation.recentMessagesFilter,1000)" class="form-control" placeholder="Filter Conversations">
Но когда я нажимаю клавиши на этом элементе ввода HTML, ничего не происходит,Применение точки останова показывает, что код никогда не возвращается, возвращая функцию с именем executeFunction.
PS: Conversation.recentMessagesFilter - это моя функция, которая должна запускаться через 1 секунду и определена в другом файле.