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 css样式操作代码(批量操作)
Oct 09 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
Sep 15 Javascript
基于jquery的图片轮播 tab切换组件
Jul 19 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
Oct 22 Javascript
关于javascript中dataset的问题小结
Nov 16 Javascript
jQuery获取与设置iframe高度的方法
Aug 01 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
JavaScript实现审核流程状态的动态显示进度条
Mar 15 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
prettier自动格式化去换行的实现代码
Aug 25 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下使用无限生命期Session的方法
2007/03/16 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
Python求出0~100以内的所有素数
2018/01/23 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
python障碍式期权定价公式
2019/07/19 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Django实现基于类的分页功能
2019/10/31 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
通用求职信范文模板分享
2013/12/27 职场文书
群众路线剖析材料
2014/09/30 职场文书
庆祝儿童节标语
2014/10/09 职场文书
毕业证明书
2015/06/19 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
nginx中proxy_pass各种用法详解
2021/11/07 Servers
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python