如果条件为真,我有一段时间间隔后要执行的操作。我在做这样的事情如果条件更改,则在setTimeout中取消操作
if($scope.goToNextPage==true){
setTimeout(() => {
$scope.location.path('nextPage');
},4000)
}
但是,如果这个时间内$scope.goToNextPage
的变化,我需要从正在执行阻止这一切。有什么办法可以做到这一点?
如果条件为真,我有一段时间间隔后要执行的操作。我在做这样的事情如果条件更改,则在setTimeout中取消操作
if($scope.goToNextPage==true){
setTimeout(() => {
$scope.location.path('nextPage');
},4000)
}
但是,如果这个时间内$scope.goToNextPage
的变化,我需要从正在执行阻止这一切。有什么办法可以做到这一点?
您可以执行该语句像
if ($scope.goToNextPage) {
setTimeout(() => {
if (!$scope.goToNextPage) {
return false;
}
$scope.location.path('nextPage');
}, 4000)
}
也没必要的检查与==
之前的另一个条件,您可以直接添加变量,因为它是布尔
更改goToNextPage假停止执行时。然后再次检查如下,
if($scope.goToNextPage==true){
setTimeout(() => {
if($scope.goToNextPage){
$scope.location.path('nextPage');
}
},4000)
}
使用$timeout
服务由angularjs。它返回可以被$ timeout.cancel方法取消的promise。 Ref