1
我处于需要频繁轮询我的服务器数据的位置。我查看了人们如何在angularjs中处理这个问题,而且我很困惑。在angularjs中使用计时器的投票服务器
一些例子只是简单的增加/减少的计数器。其他正在使用$超时服务。我需要能够通过点击按钮打开/关闭此功能。 I.E.点击开始轮询,每30秒轮询一次,点击按钮停止轮询。
我处于需要频繁轮询我的服务器数据的位置。我查看了人们如何在angularjs中处理这个问题,而且我很困惑。在angularjs中使用计时器的投票服务器
一些例子只是简单的增加/减少的计数器。其他正在使用$超时服务。我需要能够通过点击按钮打开/关闭此功能。 I.E.点击开始轮询,每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);
}
}