Cервис $timeout выполняет некоторые действия по истечению определенного промежутка времени. Однако не следует воспринимать этот сервис как
аналог стандартной функции javascript setTimeout
, это разные вещи, хотя сходство между ними в функциональности есть. Например, сделаем так, чтобы контроллер из
прошлой темы загружал данные через некоторый период:
questApp.controller('QuestionController', function QuestionController($scope, dataService, $timeout){ var promiseObj = $timeout(function(){ return dataService.getData(); }, 3000); promiseObj.then(function(value) { $scope.question=value; }); $scope.voteUp = function (answer){ answer.rate++; }; $scope.voteDown = function (answer){ answer.rate--; }; } )
Здесь функция, определенная в первом параметре, выполняется через промежуток времени, указанный во втором параметре - то есть через 3 секунды.
var promiseObj = $timeout(function(){ return dataService.getData(); }, 3000);
На выходе у нас получается объект promiseObj, который мы затем можем использовать. Например, если нам надо остановить выполнение сервиса
$timeout, то мы можем вызвать следующий метод: $timeout.cancel(promiseObj)