Отложенный запуск функции [дубликат]

182
29 мая 2018, 09:30

На данный вопрос уже ответили:

  • Запуск функции после setTimeout() [дубликат] 2 ответа

Есть функция которая должна вызывается по изменению текстового поля. Так как она отправляет ajax-запрос, не хотелось бы чтобы она срабатывала после каждого изменения текстового поля.

Как можно сделать так чтобы функция срабатывала только в том случае если изменения не происходили некоторое время?

Answer 1

Суть такова: при вводе запускаем таймер, при повторном вводе — перезапускаем. Если никто ничего долго не вводит, то таймер никто не перезапускает, и в конце концов он сработает (минимум через секунду в данном примере)

var input = document.getElementById('input'); 
var info = document.getElementById('info'); 
 
// Храним здесь ID таймера, чтобы отменять при вводе 
var task = null; 
 
input.addEventListener('input', function() { 
    info.textContent = 'Скоро сработает таймер'; 
    // Если есть старый таймер, то отменяем его 
    if (task !== null) { 
        clearTimeout(task); 
        task = null; 
    } 
    // Запускаем новый таймер 
    task = setTimeout(someWork, 1000); 
}); 
 
function someWork() { 
    task = null;  // Таймер отработал, ID хранить больше не нужно 
    info.textContent = 'Введено: ' + input.value; 
}
<input id="input" placeholder="Пиши в меня" /> 
<div id="info"></div>

READ ALSO
Vue.js запрос к серверу перед инициализацией перменных

Vue.js запрос к серверу перед инициализацией перменных

Здравствуйте у меня вопрос, можно ли сделать так, чтобы сначала послать запрос на сервер принять его, и только потом инициализоровать все...

191
Как сделать поиск по организациям в Яндекс.Картах?

Как сделать поиск по организациям в Яндекс.Картах?

Если набрать в поиске Яндекса "Психологические центры", будет показана карта со всеми похожими организациями, и карта уже настроена на твоё...

181
Написать код по стандарту ES6

Написать код по стандарту ES6

Как написать данный код по стандарту ES6?

187
Перевернуть слова в массиве не меняя порядка слов JS

Перевернуть слова в массиве не меняя порядка слов JS

У меня есть массив с элементами stringМне нужно поменять буквы в словах местами, оставив порядок слов в массиве без изменений

177