Как очистить интервал при использовании Set Interval в jQuery? - PullRequest
0 голосов
/ 04 сентября 2011

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

(function($) {
  $.fn.refreshPage = function() {

    setInterval(function() {
      function x();
    }, 300);
  };
})(jQuery);

но проблема в том, что я хочу, чтобы он сбрасывал таймер при запуске определенной функции, я читал о clearInterval, но я не уверен, как это реализовать здесь. Чтобы быть более конкретным, я хочу, чтобы функция x очищала интервал каждый раз, когда она запускается.

Контрольный вопрос:

Как мне вызвать clearInterval для функции в другом файле, учитывая текущую структуру моего плагина? Извините нуб здесь. Спасибо!

Любая помощь будет оценена. Заранее спасибо!

UPDATE

Мой плагин теперь выглядит так

(function($) {
  var refresh_timer;
  $.fn.refreshPage = function() {

    refresh_timer = setInterval(function() {
      function x();
    }, 300);
  };
  $.fn.reFreshPage.resetTimer = function() {
    clearInterval(refresh_timer);
})(jQuery);

И я звоню:

$.fn.reFreshPage.resetTimer

для сброса интервалов, но проблема в том, что он нарушает setInterval и больше не обновляет страницу после сброса таймера. Я что-то здесь упускаю?

1 Ответ

3 голосов
/ 04 сентября 2011

Вам просто нужно запомнить возвращаемое значение из исходного вызова setInterval, а затем передать его в clearInterval, чтобы остановить таймер.

var timer = setInterval(...);
clearInterval(timer);

Иногда, когда вам нужно больше контроля, проще не использовать setInterval(), а использовать setTimeout() и просто многократно вызывать setTimeout() в каждом последующем таймере, пока вы не захотите его остановить. Этот метод также позволяет при желании изменять интервал таймера.

...