下面我用$ interval处理了一个计时器函数,当我的标志设置为true时我想取消计时器,实际上我的请求必须运行多次直到我的标志设置为true。这种情况实际上是用于上传文件,我通过单击导出按钮多次打开导出请求,因此将调用我的计时器,它将寻找我的data.staus
是complete
,直到状态完成为止。由于我在这里使用watch,因此它仅适用于最新的导出请求,并且单击的上一个导出请求不会调用我的stoptimer函数。
angular.module('timerApp', ['timerApp.controllers']);
angular.module('timerApp.controllers', []).controller('timerController', ['$scope', '$interval',
function($scope, $interval) {
var timer;
var time = 10;
$scope.countdown = time;
$scope.stopTimer = function()
{
$interval.cancel(timer);
};
$scope.startTimer = function() {
timer = $interval(function() {
$scope.countdown--;
//res is response from my backend
var data = res;
if (data.status = "complete"){
$scope.timerFlag = true;
}
}, 15000, time);
timer.then(function() {
$scope.countdown = time;
});
};
}
$scope.$watch(){
if($scope.timerFlag == true){
$scope.stopTimer();
}
}
]);