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增删元素的代码
Feb 14 Javascript
js动态调用css属性的小规律及实例说明
Dec 28 Javascript
javascript中this的四种用法
May 11 Javascript
Jquery使用val方法读写value值
May 18 Javascript
半个小时学json(json传递示例)
Dec 25 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
JQuery获取鼠标进入和离开容器的方向
Dec 29 Javascript
防止重复发送 Ajax 请求
Feb 15 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
Jun 19 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
如何实现双向绑定mvvm的原理实现
May 28 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
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python动态加载变量示例分享
2014/02/17 Python
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
python中logging库的使用总结
2017/10/18 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Python列表推导式实现代码实例
2020/09/09 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
优秀辅导员事迹材料
2014/02/16 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
委托书样本
2014/04/02 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
送给客户微信问候语!
2019/07/04 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python