Как сбросить тайм-аут в Javascript / jQuery?
У меня есть поле A на моей веб-странице, которое при редактировании пользователем вызывает вызов API (используя jQuery), который обновляет поле B. после редактирования API должен вызываться каждые 10 секунд, чтобы обновить поле B снова. В настоящее время я делаю это через:
setTimeout(thisFunction, 10000);
проблема в том, что этот тайм-аут устанавливается каждый раз, когда пользователь редактирует поле A, которое после редактирования поля a пару раз вызывает тайм-аут несколько раз, а API вызывается много раз. Это делает сайт выглядит довольно напряженно.
то, что я хотел бы сделать, - это установить новый тайм-аут каждый раз, когда поле редактируется, будь то поле редактирования пользователя A или интервал, достигающий 10 секунд, и тем самым опрос API. Другими словами, поле должно быть обновлено, если поле B не обновлялось в течение 10 или более секунд.
наконец, если пользователь затем нажимает кнопку C, опрос должен прекратиться.
Итак, мой вопрос; как я могу запустить функцию для обновления поля B, если это поле B не обновлялось в течение 10 или более секунд, и как остановить опрос, когда я хочу (когда пользователь нажимает другую кнопку), все советы приветствуются!
2 ответов
таймер может быть отменен clearTimeout, так:
var timer = null;
if (timer) {
clearTimeout(timer); //cancel the previous timer.
timer = null;
}
timer = setTimeout(thisFunction, 10000);