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实现弹窗插件功能实例代码分享
Dec 12 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
Dec 03 Javascript
javascript 数组的定义和数组的长度
Jun 07 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
Feb 27 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
angular1.x ui-route传参的三种写法小结
Aug 31 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
Mar 14 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
Dec 22 Javascript
微信小程序中target和currentTarget的区别小结
Nov 06 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
curl实现站外采集的方法和技巧
2014/01/31 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP中比较时间大小实例
2014/08/21 PHP
php实现的递归提成方案实例
2015/11/14 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
php常用的工具开发整理
2019/09/26 PHP
PHP7新特性
2021/03/09 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
pandas重新生成索引的方法
2018/11/06 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
用python进行视频剪辑
2020/11/02 Python
css3中transition属性详解
2014/09/02 HTML / CSS
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
心理健康教育心得体会
2013/12/29 职场文书
《掌声》教学反思
2014/02/23 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
小学庆六一活动总结
2014/08/28 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
神秘岛读书笔记
2015/07/01 职场文书
七年级思品教学反思
2016/02/20 职场文书
Python图片检索之以图搜图
2021/05/31 Python
Anaconda配置各版本Pytorch的实现
2021/08/07 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang