Ниже я обработал функцию таймера с $ интервалом, и я хочу отменить таймер, когда мой флаг установлен как true. На самом деле мой запрос должен выполняться несколько раз, пока мой флаг не будет установлен как true. Этот сценарий фактически используется для загрузки файл, я открываю запрос на экспорт несколько раз, нажимая кнопку экспорта, поэтому к тому времени будет вызван мой таймер, и он будет искать мой data.staus
is complete
, пока мой статус не будет завершен, он будет работать. Так как я использую посмотрите здесь, он работает только для последнего запроса на экспорт, а предыдущий запрос на экспорт не вызывает мою функцию 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();
}
}
]);