Я использую setInterval(fname, 10000);
для вызова функции каждые 10 секунд в JavaScript. Можно ли перестать называть это на каком-то событии?
Я хочу, чтобы пользователь мог остановить повторное обновление данных.
Я использую setInterval(fname, 10000);
для вызова функции каждые 10 секунд в JavaScript. Можно ли перестать называть это на каком-то событии?
Я хочу, чтобы пользователь мог остановить повторное обновление данных.
setInterval()
возвращает идентификатор интервала, который вы можете передать clearInterval()
:
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
Смотрите документы для setInterval()
и clearInterval()
.
clearInterval
. Я использовалwindow.refreshIntervalId
вместо локальной переменной, и она прекрасно работает!$('foo').data('interval', setInterval(fn, 100));
и затем очищать его,clearInterval($('foo').data('interval'));
я уверен, что есть и не-jQuery способ сделать это тоже.Если вы установите возвращаемое значение
setInterval
переменной, вы можетеclearInterval
остановить ее.источник
Вы можете установить новую переменную и увеличивать ее на ++ (подсчитывать единицу) каждый раз, когда она запускается, затем я использую условный оператор для ее завершения:
Я надеюсь, что это помогает и это правильно.
источник
clearInterval(varName);
. Я ожидал,clearInterval
что не будет работать, когда передал имя функции, я думал, что требуется идентификатор интервала. Я предполагаю, что это может работать, только если у вас есть именованная функция, так как вы не можете передать анонимную функцию как переменную внутри себя.$(document).ready(function(){ });
это JQuery, поэтому он не работает Это должно быть упомянуто по крайней мере.varName
, которая хранит безымянную функцию - что ?? Вы должны изменить или снять этот ответ, ИМХО.Ответы выше уже объяснили, как setInterval возвращает дескриптор, и как этот дескриптор используется для отмены таймера интервала.
Некоторые архитектурные соображения:
Пожалуйста, не используйте переменные "scope-less". Самый безопасный способ - использовать атрибут объекта DOM. Самым простым местом был бы «документ». Если переподготовка запускается кнопкой пуска / останова, вы можете использовать саму кнопку:
Поскольку функция определена внутри обработчика нажатия кнопки, вам не нужно определять его снова. Таймер можно возобновить, если снова нажать кнопку.
источник
document
чемwindow
?Уже ответил ... Но если вам нужен многофункциональный таймер многократного использования, который также поддерживает несколько задач с разными интервалами, вы можете использовать мой TaskTimer (для узла и браузера).
В вашем случае, когда пользователи нажимают за нарушение обновления данных; Вы также можете позвонить
timer.pause()
тогда,timer.resume()
если они должны повторно включить.Подробнее здесь .
источник
Метод clearInterval () можно использовать для очистки таймера, установленного с помощью метода setInterval ().
setInterval всегда возвращает значение идентификатора. Это значение может быть передано в clearInterval (), чтобы остановить таймер. Вот пример таймера, который начинается с 30 и останавливается, когда он становится равным 0.
источник
@cnu,
Вы можете остановить интервал, когда попробуйте запустить код, прежде чем смотреть консольный браузер (F12) ... попробуйте комментарий clearInterval (триггер) - это снова выглядит консоль, а не beautifier? :П
Проверьте пример источника:
источник
Объявите переменную, чтобы присвоить значение, возвращаемое из setInterval (...), и передать назначенную переменную в clearInterval ();
например
// Везде, где у вас есть доступ к таймеру, объявленному выше, вызов clearInterval
источник
Вы также можете остановить интервал, добавив прослушиватель событий, скажем, для кнопки с идентификатором «stop-interval»:
HTML:
Примечание: интервал все равно будет выполнен, но ничего не произойдет.
источник
Вот как я использовал метод clearInterval (), чтобы остановить таймер через 10 секунд.
источник
Используйте setTimeOut, чтобы остановить интервал через некоторое время.
источник
Я думаю, следующий код поможет:
Вы сделали код на 100% правильным ... Итак ... В чем проблема? Или это учебник ...
источник
Почему бы не использовать более простой подход? Добавьте класс!
Просто добавьте класс, который говорит интервалу ничего не делать. Например: при наведении.
Я искал этот быстрый и легкий подход целую вечность, поэтому я публикую несколько версий, чтобы познакомить с ним как можно больше людей.
источник
this.setInterval(function() { if(!$('#counter').hasClass('pauseInterval')) { //do something } }, 500);
это все, что у вас есть для кода. Более того, чек - это первое, что вы делаете, поэтому он очень легкий, когда его парят. Вот для чего это: временно приостановить функцию . Если вы хотите прекратить его на неопределенный срок: конечно, вы удалите интервал.