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 相关文章推荐
使用jQuery的ajax功能实现的RSS Reader 代码
Sep 03 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
Jan 15 Javascript
js 异步操作回调函数如何控制执行顺序
Dec 24 Javascript
javascript的事件触发器介绍的实现
Jun 05 Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
AngularJS 入门教程之事件处理器详解
Aug 19 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
Oct 20 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
改变Apache端口等配置修改方法
2008/06/05 PHP
php实例分享之二维数组排序
2014/05/15 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
JS和函数式语言的三特性
2014/03/05 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
python写的一个squid访问日志分析的小程序
2014/09/17 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
英国知名小木屋定制网站:Tiger Sheds
2020/03/06 全球购物
优秀共产党员先进事迹
2014/01/27 职场文书
2014年材料员工作总结
2014/11/19 职场文书
史上最牛的辞职信
2015/02/28 职场文书
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL