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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
FusionCharts图表显示双Y轴双(多)曲线
Nov 22 Javascript
js Object2String方便查看js对象内容
Nov 24 Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
Underscore之Array_动力节点Java学院整理
Jul 10 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
JavaScript设计模式之调停者模式实例详解
Feb 03 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 Javascript
Vue Render函数原理及代码实例解析
Jul 30 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采集速度探究总结(原创)
2008/04/18 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
详解jQuery事件
2017/01/13 Javascript
JS作用域链详解
2017/06/26 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python开发编码规范
2006/09/08 Python
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
春季运动会广播稿大全
2014/02/19 职场文书
酒店管理求职信范文
2014/04/06 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
员工辞退通知书
2015/04/17 职场文书
react中的DOM操作实现
2021/06/30 Javascript