Prototype PeriodicalExecuter对象 学习


Posted in Javascript onJuly 19, 2009

This is a simple facility for periodical execution of a function. This essentially encapsulates the native clearInterval/setInterval mechanism found in native Window objects.

This is especially useful if you use one to interact with the user at given intervals (e.g. use a prompt or confirm call): this will avoid multiple message boxes all waiting to be actioned.

这个对象就是可以周期性的执行某个方法,但是在它内部维持了一个状态,可以防止由于某些原因一次调用没执行,然后下一次调用又来了,这样会造成连续执行两次方法。上面的第二断英文就是这个意思。

帮助文档上说这个对象只提供了一个方法stop,但是在我看的源码里还提供了一个事件onTimerEvent,应该可以在某个时候触发这个事件。但帮助文档上没有给出示例。

这个对象源码比较简单,这里直接贴出来了,就不再注释了:

var PeriodicalExecuter = Class.create({ 
initialize: function(callback, frequency) { 
this.callback = callback; 
this.frequency = frequency; 
this.currentlyExecuting = false; this.registerCallback(); 
}, 
registerCallback: function() { 
this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); 
}, 
execute: function() { 
this.callback(this); 
}, 
stop: function() { 
if (!this.timer) return; 
clearInterval(this.timer); 
this.timer = null; 
}, 
onTimerEvent: function() { 
if (!this.currentlyExecuting) { 
try { 
this.currentlyExecuting = true; 
this.execute(); 
} catch(e) { 
/* empty catch for clients that don't support try/finally */ 
} 
finally { 
this.currentlyExecuting = false; 
} 
} 
} 
});

看一下示例:
new PeriodicalExecuter(function(pe) { 
if (!confirm('Want me to annoy you again later?')) 
pe.stop(); }, 
5); 
// Note that there won't be a stack of such messages if the user takes too long 
// answering to the question...
Javascript 相关文章推荐
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
判断客户浏览器是否支持cookie的示例代码
Dec 23 Javascript
JavaScript获取路径设计源码
May 22 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
Feb 23 Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
vue实现购物车的监听
Apr 20 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 Javascript
Prototype String对象 学习
Jul 19 #Javascript
Prototype Template对象 学习
Jul 19 #Javascript
Prototype Number对象 学习
Jul 19 #Javascript
Prototype ObjectRange对象学习
Jul 19 #Javascript
Prototype RegExp对象 学习
Jul 19 #Javascript
Prototype Class对象学习
Jul 19 #Javascript
javascript iframe内的函数调用实现方法
Jul 19 #Javascript
You might like
php fckeditor 调用的函数
2009/06/21 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
PHP编码转换
2012/11/05 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
对象的类型:本地对象(1)
2006/12/29 Javascript
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
urllib2自定义opener详解
2014/02/07 Python
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
django中的setting最佳配置小结
2017/11/21 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
详解python中递归函数
2019/04/16 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
计算机专业个人求职自荐信
2013/09/21 职场文书
转党组织关系介绍信
2014/01/08 职场文书
音乐教学案例
2014/01/30 职场文书
新闻发布会主持词
2014/03/28 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
企业承诺书怎么写
2014/05/24 职场文书
党员反邪教心得体会
2016/01/15 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers