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编程起步(第四课)
Feb 27 Javascript
JS backgroundImage控制
May 19 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
js模拟hashtable的简单实例
Mar 06 Javascript
js 动态为textbox添加下拉框数据源的方法
Apr 24 Javascript
JQuery实现带排序功能的权限选择实例
May 18 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
小程序简单两栏瀑布流效果的实现
Dec 18 Javascript
vue使用原生swiper代码实例
Feb 05 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
PHP5权威编程阅读学习笔记 附电子书下载
2012/07/05 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
PHP连接access数据库
2015/03/27 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
Vue实现验证码功能
2019/12/03 Javascript
python生成日历实例解析
2014/08/21 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
python列表list保留顺序去重的实例
2018/12/14 Python
python多线程http压力测试脚本
2019/06/25 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
pytorch中nn.Conv1d的用法详解
2019/12/31 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
旅游项目开发策划书
2014/01/18 职场文书
申论倡议书范文
2014/05/13 职场文书
大气污染防治方案
2014/05/19 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
寒山寺导游词
2015/02/03 职场文书
Python常遇到的错误和异常
2021/11/02 Python