在下面给出的代码中,我们正在呼叫
startTimer
功能,我们使用的地方
$interval
触发对后端的请求,直到
data.status == "complete"
;一旦状态完成,我们设置
flag = true
旗子会触发手表,它会调用
$scope.stop
用于取消计时器的函数
$interval.cancel
.
但这里出现了问题,即,
$interval.取消
不知道该先停止哪个计时器。
当有多个请求根据ID调用计时器时,基于该ID完成的计时器应被取消。
所以我的问题是
如何根据ID取消计时器
.
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.startTimer = function(id) {
timer = $interval(function(id) {
$scope.countdown--;
//res is response from my backend
someRestService(id).then(res);
var data = res;
if (data.status = "complete") {
$scope.timerFlag = true;
}
}, 15000);
};
}
$scope.stopTimer = function() {
$interval.cancel(timer);
};
$scope.$watch() {
if ($scope.timerFlag == true) {
$scope.stopTimer();
}
}
]);
脚本:
RestapiHit/627
RestapiHit/628
RestapiHit/629
它将调用627请求并完成该过程,然后在即将取消使用时
$interval.cance
l它是最新的,取消629而不是627