javascript - $timeout.cancel() 没有取消超时

标签 javascript angularjs timeout

我正在运行 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);

最佳答案

您只是没有将计时器实例捕获到您的变量中,因此没有取消它。

尝试更改代码中的这一行:

$timeout(timer, 1000);

timeout = $timeout(timer, 1000);

关于javascript - $timeout.cancel() 没有取消超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46323514/

相关文章:

javascript - Rails 中的 Jquery 异步表单提交

twitter-bootstrap - 无法正确显示 Twitter Bootstrap 字形图标

angularjs - Angular 在输入时提交表单不适用于移动设备上的数字输入

javascript - AngularJS – $route.reload() 不工作

Android - 定期发生 HttpClient 超时

java - JDBI 的查询超时

python - 如何运行超时进程并在运行时仍然获得标准输出

javascript - 在 mailto : action 上打开 Gmail

javascript - 当输入焦点或已填充时显示 div jquery

javascript - 如何获得区域值(value)?