Refresh scope on every x time using $timeout Refresh scope on every x time using $timeout angularjs angularjs

Refresh scope on every x time using $timeout


But i would suggest to move the $interval to the controller.

 App.factory('MyService' ,function($scope,$timeout){  return{    notification: function(){        return $http.get("notification/get").success(function(response){           return response.data;        });              }  }); function Controller($scope,MyService,$interval){     /**   * Loads and populates the notifications   */   this.loadNotifications = function (){      MyService.notification().then(function(data){        $scope.notification =data;      });   });   //Put in interval, first trigger after 10 seconds    var theInterval = $interval(function(){      this.loadNotifications();   }.bind(this), 10000);        $scope.$on('$destroy', function () {        $interval.cancel(theInterval)    });   //invoke initialy   this.loadNotifications();}

This seems like a better architecture there.

Passing, resolving or rejecting promises will $digest the scope. You want to get the notifications every x milliseconds and pass them into the scope.


You want to instantiate the timeout after it finishes. Try changing your $timeout function to something like:

var timer = $timeout( function refresh(){    $http.get("notification/get").success(callback)    timer = $timeout(refresh, 100000);}, 100000);