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实现表单验证并阻止非法提交
Jul 09 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
Oct 31 Javascript
Vue.JS入门教程之列表渲染
Dec 01 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
vue之数据交互实例代码
Jun 16 Javascript
Vue修改mint-ui默认样式的方法
Feb 03 Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 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数据类型的总结分析
2013/06/13 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
php json相关函数用法示例
2017/03/28 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
js自定义回调函数
2015/12/13 Javascript
javascript实现拖放效果
2015/12/16 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
详解Python如何生成词云的方法
2018/06/01 Python
详解python播放音频的三种方法
2019/09/23 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
如何使用python代码操作git代码
2020/02/29 Python
软件缺陷的分类都有哪些
2014/08/22 面试题
工作分析计划书
2014/04/30 职场文书
综合实践活动总结
2014/05/05 职场文书
寒假安全保证书
2015/02/28 职场文书
结婚堵门保证书
2015/05/08 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL