AngularJS中的定時器,以及定時器的移除

1.相比較於JS中setTimeInterval和setTimeout,angularJS中經過 interval timeout來實現時間延遲。php

$timeout //實現的是延遲執行
$interval //實現的是定時器的效果

咱們分別來看這兩個服務web

(1)timeout
timeout至關於JS原生裏面的延遲執行,不一樣的是該服務的函數返回的是一個promise對象。promise

var timer=$timeout(function(){
     console.log('hello world')
},2000);   //該函數延遲2秒執行

timer.then(function(){ console.log('建立成功')},
function(){ console.log('建立不成功')};

(2)intervalsvg

interval與timeout服務大同小異,建立定時器返回的也是一個promise對象。函數

var timer=$interval(function(){
     console.log('hello world')
},2000);   //間隔2秒定時執行

timer.then(function(){ console.log('建立成功')},
function(){ console.log('建立不成功')};

2.如何移除定時器atom

在angularJSo中,特別是在頁面切換或者說是路由切換的時候,咱們須要移除響應的定時器,咱們能夠經過 onDOM on方法:spa

$scope.$on('destroy',function(){
   $interval.cancel($scope.timer);
})  //在控制器裏,添加$on函數