サーバーにデータを頻繁にポーリングする必要がある場所にいます。angularjsで人々がこれをどのように処理しているかを見回しましたが、かなり混乱しています。
いくつかの例は、上下にインクリメントする単純なカウンターです。その他は $timeout サービスを使用しています。ボタンをクリックしてこれをオン/オフする機能が必要です。IE をクリックしてポーリングを開始し、30 秒ごとにポーリングし、ボタンをクリックしてポーリングを停止します。
サーバーにデータを頻繁にポーリングする必要がある場所にいます。angularjsで人々がこれをどのように処理しているかを見回しましたが、かなり混乱しています。
いくつかの例は、上下にインクリメントする単純なカウンターです。その他は $timeout サービスを使用しています。ボタンをクリックしてこれをオン/オフする機能が必要です。IE をクリックしてポーリングを開始し、30 秒ごとにポーリングし、ボタンをクリックしてポーリングを停止します。
私は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);
}
}