2013-07-24 5 views
1

나는 자주 서버를 폴링해야하는 지점에 있습니다. 나는 사람들이 anglejs에서 이것을 어떻게 다루고 있는지를 둘러 보았고 나는 꽤 혼란 스럽다.각도가있는 타이머가있는 폴링 서버

몇 가지 예는 위/아래로 증가하는 단순한 카운터입니다. 다른 사용자는 $ timeout 서비스를 사용하고 있습니다. 버튼 클릭으로이 기능을 켜고 끌 수있는 기능이 필요합니다. I.E. 폴링을 시작하려면 클릭하고 폴링을 중지하려면 버튼을 클릭하십시오.

답변

1

나는 javascript와 각도에서 그렇게 잘한다고 주장하지 않으므로 쉽게 가십시오. 나는 setInterval을하고 위해 clearInterval을 사용하여 내 자신의 서비스를 작성했다 :

angular.module('myModule', []) 
    .factory('TimerService', 
    function() { 
     var timers = {}; 

     var startTimer = function(name, interval, callback) { 
     // Stop the timer if its already running, no-op if not running 
     stopTimer(name); 

     timers[name] = setInterval(function() { 
      callback(); 
     }, interval); 

     // Fire right away, interval will fire again in specified interval 
     callback(); 
     } 


     var stopTimer = function(name) { 
     var timer = timers[name]; 
     if (timer) { 
      clearInterval(timer); 
      delete timers[name]; 
     } 
     } 

     return { 
     start: startTimer, 
     stop: stopTimer 
     }; 
    }); 

그리고 내 컨트롤러에서 나는이 수행

var timerARunning = false; 
    $scope.onClickA = function() { 
    var timerName = 'timerA'; 
    timerARunning = !timerARunning; 

    if (timerARunning) { 
     TimerService.start(timerName, 5000, function() { 
     alert("Timer A just fired"); 
     }); 
    } else { 
     TimerService.stop(timerName); 
    } 
    }