2017-09-26 77 views
1

如果条件为真,我有一段时间间隔后要执行的操作。我在做这样的事情如果条件更改,则在setTimeout中取消操作

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

但是,如果这个时间内$scope.goToNextPage的变化,我需要从正在执行阻止这一切。有什么办法可以做到这一点?

回答

0

您可以执行该语句像

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

也没必要的检查与==之前的另一个条件,您可以直接添加变量,因为它是布尔

0

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

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

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