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 相关文章推荐
用 javascript 实现的点击复制代码
Mar 24 Javascript
JQUERY 浏览器判断实现函数
Aug 20 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
Apr 07 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
Aug 07 Javascript
jquery数组过滤筛选方法grep()简介
Jun 06 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 Javascript
Angular.Js之Scope作用域的学习教程
Apr 27 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
Jul 19 jQuery
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
Vue路由 重定向和别名的区别说明
Sep 09 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
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
让Python更加充分的使用Sqlite3
2017/12/11 Python
Python实现通讯录功能
2018/02/22 Python
python 异或加密字符串的实例
2018/10/14 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
法定代表人免职证明
2015/06/24 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android