angularjs - 使用 $scope.$watch 处理 $interval.cancel 不起作用
问题描述
下面我用 $interval 处理了一个计时器函数,我想在我的标志设置为 true 时取消计时器,实际上我的请求必须运行多次,直到我的标志设置为 true。这个场景实际上是用于上传文件,我通过单击导出按钮多次打开导出请求,所以到那时我的计时器将被调用,它会寻找我data.staus
的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();
}
}
]);
解决方案
推荐阅读
- android - 使用由 ClassCastException 引起的 Hilt 时 Android 测试失败
- monetdb - 在 MonetDB 中对重音字符进行排序
- python - 无法从检查点加载模型
- javascript - 调试分配失败 - 在 Heroku 上运行的 Meteor 应用程序的 JavaScript 堆内存不足
- castle-windsor - NLog with Windsor Castle - 如何将日志保存到数据库 (.NET Core 3.1)
- c# - 如何在 WPF 的属性窗口中显示用户类属性
- c++ - C++98模板类静态成员初始化?
- java - 使用 Springboot 将两个列表添加到 Response
- c# - 使用 C# 使用带有 PosExplorer Opos SDK.Net 的打印机的 IP 地址
- podman - 为什么我不能在这个目录上做 podman unshare