Подтвердить что ты не робот

Как reset время ожидания в Javascript/jQuery?

У меня есть поле A на моей веб-странице, которое при редактировании пользователем вызывает вызов API (с использованием jQuery), который обновляет поле B. После редактирования API следует вызывать каждые 10 секунд для обновления поле B снова. В настоящее время я делаю это, используя:

setTimeout(thisFunction, 10000);

Проблема заключается в том, что этот тайм-аут устанавливается каждый раз, когда пользователь редактирует поле A, которое после редактирования поля A пару раз заставляет таймаут устанавливаться несколько раз, и API, который будет вызываться много раз. Это делает сайт довольно напряженным.

То, что я хотел бы сделать, - устанавливать новый тайм-аут каждый раз, когда редактируется поле, будь то полем редактирования пользователя A или интервалом, достигающим 10 секунд и тем самым опросом API. Другими словами; поле должно быть обновлено, если поле B не обновлялось в течение 10 или более секунд.

Наконец, если пользователь затем нажимает кнопку C, опрос должен останавливаться.

Итак, мой вопрос; как я могу запустить функцию для обновления поля B, если это поле B не было обновлено в течение 10 или более секунд и как остановить опрос, когда я захочу (когда пользователь нажмет другую кнопку). Все советы приветствуются!

4b9b3361

Ответ 1

Таймер может быть отменен с помощью clearTimeout, поэтому:

var timer = null;
if (timer) {
    clearTimeout(timer); //cancel the previous timer.
    timer = null;
}
timer = setTimeout(thisFunction, 10000);

Ответ 2

var update;

// something happened

clearTimeout(update);
update = setTimeout(thisFunction, 10000);