2010-07-14 2 views
4

이 내가 만든이 하나를 사용 자바 스크립트 타이머를 전환하는 더 우아한 방법은 무엇입니까,하지만 난 프로그래머에게 더 나은 방법을 알고 : 그렇지 않으면 (알면 만 1 개 타이머를 사용하는 가정에 따라

function toggle_timer() 
{ 
    if(timer_id > 0){ 
     clearTimeout(timer_id); 
     timer_id=0; 
    } 

    else timer_id = setInterval("go()", interv); 
} 

그것을 누가 타이머를 알 수 있습니까?) 지금까지는이 문제가 발생하지 않았습니다 (기적, 알고 있습니다).

답변

8

당신은 타이머 ID를 기억 객체로 묶지 수 :

function timer(millis_, f_) { 
    return { 
     f: f_, 
     millis: millis_, 
     toggle: function(){ 
      if(this.id > 0) clear(); 
      else start(); 
     }, 
     clear: function(){ clearInterval(this.id); this.id=0; }, 
     start: function(){ this.id=setInterval(this.f, this.millis); } 
    }; 
} 

var t1=timer(1000, function(){alert("1000");}); 
var t2=timer(10000, function(){ alert("a long time");}); 

t1.toggle(); 
t2.toggle(); 

면책 조항 : 검증되지 않은 -하는 생각을 잡아!

+0

멋지다. Sidenote : stackoverflow에서 everyones 코딩 기능이 뛰어납니다. 나는 아주 재미있는 놀이터에서 멍청한 멍청한 멍청한 멍청이처럼 느껴진다. 다시, tyvm :-) – jason

+0

+1 - 매우 간단한 API 위에 부가가치 서비스를 추가하는 좋은 예입니다. – Anurag