Эффективное использование setInterval / clearInterval - PullRequest
4 голосов
/ 06 июля 2011

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

Мой вопрос заключается в том, как я должен вызывать функцию clearInterval (intervalId) для всех других событий, кроме одного.Пожалуйста, рассмотрите пример: Предположим, у меня есть некоторые события, связанные с текущим экраном, и я хочу запустить свой setInterval только по щелчку «.myBtn» и остановить все остальные события.

    var intervalId = 0;

    $(".myBtn").click(function(){
        intervalId = setInterval(function(){
          alert("execute something");
        }, 2000);  
    });

   $(".otherElm").click(function(){
      // some other stuff.
   });


   $(".otherElm1").click(function(){
      // some other stuff.
   });


   $(".otherElm2").click(function(){
      // some other stuff.
   });

Для описанной выше ситуации, Я знаю только один способ остановить интервал, т.е. поставить «clearInterval (intervalId)» в любое другое событие .

Но есть ли другой способ сделать это?

Надеюсь, я все изложил, чтобы можно было понять мой вопрос.

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 06 июля 2011

Другой способ сделать это - сделать что-то вроде:

$(".myBtn").click(function(){
    setTimeout(someFunction,2000);  
});

var someFunction = function()
{
    // CODE HERE
    if(conditions for stopping function are not met){
        //Run function again
        setTimeout(someFunction, 2000);
    }
}

Хотя больше кода, мне легче управлять, особенно если вам приходится иметь дело с большим количеством ID-интервалов.

1 голос
/ 06 июля 2011

Вы правы в своем комментарии - вы должны поместить clearInterval (IntervalId) во все события, которые вам требуются, чтобы остановить событие.Есть ли проблема с этим?

Редактировать:

Определить их всех с классом - скажем, вяз.Как только это будет сделано, используйте $ (". Elm"). Click (clearinterval).

0 голосов
/ 06 июля 2011
setInterval("alert('negaweblog.wordpress.com')",1000);

1000 - 1 сек.

Каждую секунду он будет оповещать 'negaweblog.wordpress.com'

...