如果条件更改,则在setTimeout中取消操作

时间:2017-09-26 12:10:36

标签: javascript angularjs

如果条件为真,我有一个时间间隔后执行的操作。我正在做这样的事情

if($scope.goToNextPage==true){
    setTimeout(() => {
        $scope.location.path('nextPage');
    },4000)       
}

但是,如果$scope.goToNextPage在此持续时间内发生变化,我需要停止执行此操作。我有什么方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:0)

在执行该语句之前可以使用其他条件,如

if ($scope.goToNextPage) { 
    setTimeout(() => {
        if (!$scope.goToNextPage) {
            return false;
        }
        $scope.location.path('nextPage');
    }, 4000)
}

也不需要检查==,你可以直接添加变量,因为它是boolean

答案 1 :(得分:0)

停止执行时将goToNextPage更改为false。然后再次检查如下,

if($scope.goToNextPage==true){
    setTimeout(() => {
        if($scope.goToNextPage){
            $scope.location.path('nextPage');
        }  
    },4000)       
}

答案 2 :(得分:0)

使用angularjs的$timeout服务。它返回可以通过$ timeout.cancel方法取消的promise。 Ref