1

サーバーにデータを頻繁にポーリングする必要がある場所にいます。angularjsで人々がこれをどのように処理しているかを見回しましたが、かなり混乱しています。

いくつかの例は、上下にインクリメントする単純なカウンターです。その他は $timeout サービスを使用しています。ボタンをクリックしてこれをオン/オフする機能が必要です。IE をクリックしてポーリングを開始し、30 秒ごとにポーリングし、ボタンをクリックしてポーリングを停止します。

4

1 に答える 1

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);
    }
  }
于 2013-07-24T16:52:15.510 に答える