angularjs定时任务的设置与清除示例


Posted in Javascript onJune 02, 2017

人们似乎常常将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); 
  })

我的页面是这种格式的,如下图所示。angularjs在“实时数据监测”这个模块设置了一个定时任务,当我点击菜单栏到别的页面时,默认的这个定时任务还在执行,占用很多资源。所以必须得清除这个定时任务,原生的清除window.clearInterval(timeout_upd);是不管用的,必须用angularjs自带的清除方法,如上代码所示。

angularjs定时任务的设置与清除示例

注意:angularjs中设置了定时任务之后,必须清除定时任务,不然angularjs会在离开这个controller后,仍然会执行这个定时任务。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
Apr 21 Javascript
用javascript读取xml文件读取节点数据
Aug 12 Javascript
JS JQUERY实现滚动条自动滚到底的方法
Jan 09 Javascript
关于数据与后端进行交流匹配(点亮星星)
Aug 03 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
Feb 22 Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
微信小程序实现自定义底部导航
Nov 18 Javascript
echarts浮动显示单位的实现方法示例
Dec 04 Javascript
JavaScript实现打字游戏
Feb 19 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
Jun 02 #Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 #Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 #Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 #Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 #Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 #jQuery
Vue.js中数据绑定的语法教程
Jun 02 #Javascript
You might like
Cannot modify header information错误解决方法
2008/10/08 PHP
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
php微信开发之图片回复功能
2018/06/14 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
Python中的rjust()方法使用详解
2015/05/19 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
基于树莓派的语音对话机器人
2019/06/17 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
医学专业大学生求职的自我评价
2013/11/27 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
国旗下演讲稿
2014/05/08 职场文书
在职员工证明书
2014/09/19 职场文书
举起手来观后感
2015/06/09 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis