More recent versions of angular have introduced $interval which works even better than $timeout for server polling.
var refreshData = function() { // Assign to scope within callback to avoid data flickering on screen Data.query({ someField: $scope.fieldValue }, function(dataElements){ $scope.data = dataElements; });};var promise = $interval(refreshData, 1000);// Cancel interval on page changes$scope.$on('$destroy', function(){ if (angular.isDefined(promise)) { $interval.cancel(promise); promise = undefined; }});