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蒙版控件实现代码
Dec 08 Javascript
JS正则验证邮箱的格式详细介绍
Nov 19 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
JS获取select的value和text值的简单实例
Feb 26 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
详解Angularjs中的依赖注入
Mar 11 Javascript
JS中this上下文对象使用方式
Oct 09 Javascript
详谈js原型继承的一些问题
Sep 06 Javascript
javaScript中的空值和假值
Dec 18 Javascript
详解Vue前端对axios的封装和使用
Apr 01 Javascript
vue 实现微信浮标效果
Sep 01 Javascript
JS前端可扩展的低代码UI框架Sunmao使用详解
Jul 23 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
JS实现方形抽奖效果
2018/08/27 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
安装Python的教程-Windows
2017/07/22 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
python中的闭包函数
2018/02/09 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
通过python检测字符串的字母
2020/02/18 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
电信专业毕业生推荐信
2013/11/18 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
总结Python使用过程中的bug
2021/06/18 Python
基于Python实现流星雨效果的绘制
2022/03/18 Python
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server