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 相关文章推荐
基于jQuery实现点击同时更改两个iframe的网址
Jul 01 Javascript
Javascript new关键字的玄机 以及其它
Aug 25 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
Jun 14 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
JavaScript作用域示例详解
Jul 07 Javascript
最棒的Angular2表格控件
Aug 10 Javascript
基于Bootstrap仿淘宝分页控件实现代码
Nov 07 Javascript
JS开发中基本数据类型具体有哪几种
Oct 19 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
vue动态设置img的src路径实例
Sep 18 Javascript
vue 路由守卫(导航守卫)及其具体使用
Feb 25 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
Jun 24 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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
对于Python深浅拷贝的理解
2019/07/29 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Pygame的程序开始示例代码
2020/05/07 Python
Python代码执行时间测量模块timeit用法解析
2020/07/01 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
质检部岗位职责
2013/11/11 职场文书
2014年施工员工作总结
2014/11/18 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
邀请函样本
2015/02/02 职场文书
优质护理服务心得体会
2016/01/22 职场文书
导游词之清晏园
2019/11/22 职场文书
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库