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 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
document.getElementById方法在Firefox与IE中的区别
May 18 Javascript
JavaScript 语言的递归编程
May 18 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
Dec 26 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
JavaScript生成.xls文件的代码
Dec 22 Javascript
JavaScript之排序函数_动力节点Java学院整理
Jun 30 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
利用JS判断客户端类型你应该知道的四种方法
Dec 22 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 Javascript
使用node-media-server搭建一个简易的流媒体服务器
Jan 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
PHP开发中四种查询返回结果分析
2011/01/02 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
JS关键字变色实现思路及代码
2013/02/21 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
2015/08/31 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
原生JS实现留言板
2020/03/26 Javascript
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
使用python实现简单五子棋游戏
2019/06/18 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
如何使用python切换hosts文件
2020/04/29 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
在校学生职业规划范文
2014/01/08 职场文书
家长给小学生的评语
2014/01/30 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
经营场所使用证明
2015/06/19 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫