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 相关文章推荐
jcrop基本参数一览
Jul 16 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
jQuery中$.click()无效问题分析
Jan 29 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
Bootstrap面板使用方法
Jan 16 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
使用vue-resource进行数据交互的实例
Sep 02 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
Sep 02 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
JavaScript Blob对象原理及用法详解
Oct 14 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水印
2007/03/16 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
jqgrid 表格数据导出实例
2013/11/21 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
2016/12/08 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
分分钟入门python语言
2018/03/20 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
python实现猜拳小游戏
2020/04/05 Python
python list的index()和find()的实现
2020/11/16 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
迅雷Cued工作心得体会
2014/01/27 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
英语复习计划
2015/01/19 职场文书
爱心募捐感谢信
2015/01/22 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS