2017-09-26 52 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