【发布时间】:2017-09-20 13:32:23
【问题描述】:
我正在运行 3 分钟超时,并且在该超时期间,我正在特定持续时间运行另一个函数。但是当我尝试取消超时时,它仍在运行,并且其中的函数仍在执行。这是我的代码
$scope.time = 180000;
var timer = function() {
if ($scope.time > 0) {
$scope.time -= 1000;
var durations = [170000, 150000, 130000, 110000, 90000, 70000, 50000, 30000, 10000];
if (durations.includes($scope.time)) {
dataService.acceptNotify(payload).then(function(response) {
console.log(response);
if (response.data.success === true) {
$mdToast.showSimple(response.data.msg);
$mdDialog.hide();
$timeout.cancel(timeout);
}
})
}
$timeout(timer, 1000);
} else {
$mdDialog.hide();
}
}
var timeout = $timeout(timer, 1000);
【问题讨论】:
-
在取消超时后立即将其设置回来而不存储其参考
-
@dev8080 我已经建立了一个倒数计时器,我需要调用它 $timeout(timer, 1000);在内部保持运行
-
但是当你取消超时时,你只会取消变量“超时”中的那个,而不是你在循环中开始的那个。
-
请尝试我建议的更改。
标签: javascript angularjs timeout