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 相关文章推荐
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
读jQuery之十四 (触发事件核心方法)
Aug 23 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
js 处理数组重复元素示例代码
Dec 27 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 Javascript
利用JavaScript为句子加标题的3种方法示例
Jan 05 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
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中的一些数组排序方法分享
2012/07/20 PHP
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
js调用css属性写法
2013/09/21 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
ant design实现圈选功能
2019/12/17 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
Pytorch释放显存占用方式
2020/01/13 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
高一数学教学反思
2014/02/07 职场文书
大学生演讲稿
2014/04/25 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
小学班主任研修日志
2015/11/13 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
mysql 索引合并的使用
2021/08/30 MySQL