Я делаю демонстрацию, в которой я получаю данные с сервера через регулярные промежутки времени, используя $interval
Теперь мне нужно остановить / отменить это.
Как я могу этого добиться? Если мне нужно перезапустить процесс, как мне это сделать?
Во-вторых, у меня есть еще один вопрос: я получаю данные с сервера через определенные промежутки времени. Есть ли необходимость использовать $scope.apply
или $scope.watch
?
Вот мой плункер:
app.controller('departureContrl',function($scope,test, $interval){
setData();
$interval(setData, 1000*30);
function setData(){
$scope.loading=true;
test.stationDashBoard(function(data){
console.log(data);
$scope.data=data.data;
$scope.loading=false;
//alert(data);
},function(error){
alert('error')
}) ;
}
});
источник
apply()
, если вы пользуетесь$interval
сервисом, поскольку он делает это за вас. Но если вы используете встроенныйsetInterval()
, возможно, вам придется использовать$scope.$apply()
.$destroy
хорошо работает вместе сhttp-auth-interceptor
подобным в моем случае, когда я хочу остановить интервал во время сбоя аутентификации (например, истекший сеанс) и начать снова после успешной аутентификации. Спасибо за это отличное решение.var interval = $interval(function() { console.log('say hello'); }, 1000); $interval.cancel(interval);
источник
var promise = $interval(function(){ if($location.path() == '/landing'){ $rootScope.$emit('testData',"test"); $interval.cancel(promise); } },2000);
источник
$location.path()
название штата, а не название штата$scope.toggleRightDelayed = function(){ var myInterval = $interval(function(){ $scope.toggleRight(); },1000,1) .then(function(){ $interval.cancel(myInterval); }); };
источник
Если вы хотите создать обещание интервального хранения переменной:
var p = $interval(function() { ... },1000);
И если вы хотите остановить / очистить интервал, просто используйте:
источник