codeing or artist ?
记得大学第一节编程课,教授说,"如果一件事儿有对错,那么是科学。如果有美丑好坏,那么是艺术。" 一个能顺利运行还能让人阅读时体验思维美妙的代码,就是艺术和科学的结合。能运行的程序并不是好程序,能当作文章来读的才是。在我看来代码是一种特殊的文体,程序猿其实会写诗。
posts - 194,comments - 6,trackbacks - 0

人们似乎常常将AngularJS中 的$timeOut()  $interval()函数看做是一个内置的、无须在意的函数。但是,如果你忘记了$timeOut()$interval()的回调函数将会造成非常 不好的影响,你可能会因此遇到代码莫名其妙的出现问题,或者无端抛出一个错误甚至是一遍一遍的重复对的你的服务器进行$http请求这些诡异的情形。管理 好你的$timeOut/$interval定时器的小技巧就是在$destory事件中将它们取消。

JavaScript中原生的setTimeout()以及setInterval()函数不同,angularjs中 的$timeOut()函数会返回一个promise。和其他的promise一样,你可以绑定$timeOut的resolved和rejected时 间。然而更重要的是,你可以通过将这个promise传递给$timeOut.cancel()方法来取消掉潜在的定时器。


设置定时任务,给定时任务起一个名字time_upd,为的是方便清理的时候直接调用名称。

 

var timeout_upd = $interval($scope.upd_data ,6000);  

 

注意:设置的时候$interval(fn ,time);第一个参数fn 不能写“()”,只能写$scope.方法名称。第二个参数是定时执行的时间间隔,单位为毫秒。

清除定时任务,AngularJS将会在scope中触发$destory事件。这让我们可以有机会来cancel任何潜在的定时器。

 

    $scope.$on('$destroy',function(){  
           $interval.cancel(timeout_upd);  
       })  

 

posted on 2017-07-24 09:45 codeing-or-artist-?? 阅读(...) 评论(...) 编辑 收藏