2013-01-07 2 views
-2

좀 긴 폴링을하고있는 중이을 죽지 않을 것이며, 내가 여기있다 .. 특정 문에 해당하는 경우 버튼이 깜박을 만들 수있는 기능을 가지고 :타이머 .. 자바 스크립트

function blinking(object, x) { 

    console.log(x); 

    if(x>0){ 

     var existing_timer = object.data('clock'); 
     if (existing_timer){ 
      clearInterval(existing_timer); 
     } 

     timer = setInterval(blink, 10); 

     function blink() { 
      object.fadeOut(400, function() { 
       object.fadeIn(400); 
      }); 
     } 

    } 

} 

이제 .. 공지 사항 타이머는 '타이머'로 설정됩니다. 진술을 거짓으로 만드는 (x = 0로 만드는) 무언가를하는 사람이있을 때 x = 0을 볼 때 타이머가 깜박 거리지 않게하고 싶습니다. 이것은 쉽게 들릴지 모르지만 나는 모든 것을 하 고 노력했다.

저는 여러 가지를 연구하고 시도해 왔지만 작동하지 않습니다.

+2

어떻게'timer' 이제까지 중지 것? 'timer'가 아니라'existing_timer'에'clearInterval'을 호출하고 있습니다. 또한 '깜박임'은 반복 기능이지만, 한 번만 호출되는 '깜박임'에서는 분명합니다. – jbabey

+0

모든 깜박임 간격이 아니라 'x'값을 한 번만 쿼리합니다. – Bergi

+0

나는 지금 그것을 알아 차리고있다. 나 자신을 바로 잡을 수 있는지 보자. – greycode

답변

1

당신의 변수 타이머가 글로벌 경우, 해당 사용하여 간격을 취소 할 수 있어야한다 : 그건 당신이 취소 필요하므로,

clearInterval(timer); 

이 정수는 setInterval을에서 반환 된 그 타이머에 고유 한 .

+0

나는 그것을 시험해 보았다. @ justin doesnt work. 함수는 계속 긴 폴링 부분에 의해 끊임없이 호출됩니다. – greycode

+0

아마도 다른 일이 일어나고 있습니다 ... jsfiddle을 만들어야하고 거기에서 갈 수 있습니다. –

+0

나는 우리의 mysql을 폴링합니다. – greycode

0

다음은 간단한 구현입니다.

var $led = $('#led'), 
    blinkState = 0, 
    blinkTimer, 
    blinkDuration = 300, 
    blink = function() { 
     if (blinkState) { 
     $led.toggleClass('on'); 
     } 
     console.log('blink'); 
     blinkTimer = setTimeout(blink, blinkDuration);  
    }; 

$('button').on('click', function() { 
    blinkState = (blinkState) ? 0 : 1; 
}); 

blink(); 

http://jsfiddle.net/AQgBc/

난 그냥 당신을 복제하지 않고 내 자신을 썼다, 그러나 가장 관련성 문제는, 내 생각, 그냥 setInterval을 걱정하고 간격을 지우기보다는에서는 setTimeout을 사용하고 있습니다. 응답

편집 코멘트 :

당신이 사용자 작업까지 깜박 싶은 경우에, 폴링을 중지, 심지어는 간단합니다.

http://jsfiddle.net/AQgBc/1/

var $led = $('#led'), 
    blinkState = 1, 
    blinkTimer, 
    blinkDuration = 300, 
    blink = function() { 
     if (blinkState) { 
     console.log('blink'); 
     $led.toggleClass('on'); 

     blinkTimer = setTimeout(blink, blinkDuration); 
     } 
    }; 

$('button').on('click', function() { 
    blinkState = (blinkState) ? 0 : 1; 
}); 

blink(); 
+0

감사합니다. 하지만 사용자가 다른 곳을 클릭 할 때까지 루프를 유지해야한다는 것을 알았습니다. 그런 다음 버튼이 깜박임을 멈 춥니 다. – greycode

+0

더 간단합니다! http://jsfiddle.net/AQgBc/1/ (대답도 편집하겠습니다.) – Nate

+0

원본 스크립트를 통합 할 수 있습니까 – greycode

관련 문제