如果條件爲真,我有一段時間間隔後要執行的操作。我在做這樣的事情如果條件更改,則在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