angualr清除定時器

angualrJs清除定時器爬坑之路:javascript

今天發現一個奇怪問題,放在自定義指令裏邊的定時器居然在頁面跳轉以後,在另外一個頁面這個循環定時器還在執行,這確定是不行的,會影響系統的性能。java

我在angular裏邊用原生的方法window.onunload方法居然無論用,因此只好用angular本身的方法$destroy,這頁面跳轉,DOM結構發生變化是都能清除定時器app

             var  timer = setInterval(function(){
                    $scope.$apply(function(){
                        //這裏是想要定時刷新的邏輯
                    });
                },3000);
                $scope.$on('$destroy',function(){
                    if (timer) {
                        clearInterval(timer);
                        timer = null;
                    }
                });

 這裏說一下,由於我用的是javascript中原生的setTimeout()以及setInterval()函數,因此清除時對應是clearTimeout()和clearInterval(),angular定時器是$timeOut和$interval,因此清除對應是$timeOut.cancel()和$interval.cancel(),函數

必須一一對應,不一致是不會清除掉的性能

相關文章
相關標籤/搜索