js 链式延迟执行DOME


Posted in Javascript onJanuary 04, 2012

这样的形式执行:

d.wait(3000).run(function(m){ //等待3秒 
alert('从前有座山'); 
}).wait(1000).run(function(m){ //等待1秒 
alert('山里有座庙'); 
}).wait(2000).run(function(m){ //等待2秒 
alert('庙里有一个老和尚给一个小和尚讲故事'); 
}).wait(3000).run(function(m){ //等待3秒 
alert('讲的故事是:'); 
}).goStart(); //跳到第一条重新执行,这句拿掉就只执行一次
<!doctype html> 
<html> 
<head> 
<title>异步执行</title> 
</head> 
<body> 
<script type="text/javascript"> 
function Delay(){ 
this.funList= []; 
this.index = 0; 
this.re = null; 
this.isloop = false; 
}; 
Delay.prototype = { 
wait:function(m){ 
if(this.funList[this.index] && typeof this.funList[this.index].fun != 'function'){ 
m += this.funList[this.index].m; 
} 
this.funList[this.index] = {m:m,fun:null}; 
return this; 
}, 
run:function(fun){ 
if(typeof this.funList[this.index].fun != 'function'){ 
this.funList[this.index].fun = fun; 
this.index++; 
}else{ 
this.index++; 
this.funList[this.index] = {'m':0,'fun':fun}; 
} 
this.start(); 
return this; 
}, 
start:function(){ 
var self = this; 
if(this.re) return; 
var setOutrun = function(funList,index){ 
if(funList[index] == undefined){ 
clearTimeout(self.re); 
return false; 
} 
var m = funList[index].m, 
fun = funList[index].fun; 
typeof fun == 'function' || (fun = function(){}); 
self.re = setTimeout(function(){ 
if(fun(index) === false)return false; 
if(self.isloop){ 
index = -1; 
self.isloop = false; 
} 
setOutrun(funList,++index); 
},m); 
} 
setOutrun(this.funList,0); 
}, 
stop:function(){ 
return clearTimeout(this.re); 
}, 
goStart:function(){ 
var self = this, 
fun = function(){ 
self.isloop = true; 
}; 
if(this.funList[this.index] && typeof this.funList[this.index].fun != 'function'){ 
this.funList[this.index].fun = fun; 
this.index++; 
}else{ 
this.funList[this.index] = {'m':0,'fun':fun}; 
} 
this.start(); 
} 
}; 
var d = new Delay(); 
d.wait(3000).run(function(m){ 
alert('从前有座山'); 
}).wait(2000).run(function(m){ 
alert('山里有座庙'); 
}).wait(2000).run(function(m){ 
alert('庙里有一个老和尚给一个小和尚讲故事'); 
}).wait(2000).run(function(m){ 
alert('讲的故事是:'); 
}).goStart(); 
</script></body> 
</html>
Javascript 相关文章推荐
Javascript 判断 object 的特定类转载
Feb 01 Javascript
Javascript 键盘keyCode键码值表
Dec 24 Javascript
计算世界完全对称日的js代码,粗糙版
Nov 04 Javascript
js 为label标签和div标签赋值的方法
Aug 08 Javascript
jquery的ajax简单结构示例代码
Feb 17 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
Jul 17 Javascript
浅谈JavaScript 标准对象
Jun 02 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
Jun 19 Javascript
详解Vue中组件的缓存
Apr 20 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
vue中使用vee-validator完成表单校验方案
Nov 01 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 #Javascript
Textarea与懒惰渲染实现代码
Jan 04 #Javascript
js中有关IE版本检测
Jan 04 #Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
Jan 04 #Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 #Javascript
js变量以及其作用域详解
Jul 18 #Javascript
分享一个asp.net pager分页控件
Jan 04 #Javascript
You might like
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
PHP 实现重载
2021/03/09 PHP
use jscript List Installed Software
2007/06/11 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
python虚拟环境完美部署教程
2019/08/06 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
python和JavaScript哪个容易上手
2020/06/23 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
GLAMGLOW格莱魅美国官网:美国知名的面膜品牌
2016/12/31 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
.net面试题
2016/09/17 面试题
员工工作表扬信范文
2014/01/13 职场文书
服务员岗位责任制
2014/02/11 职场文书
创意广告词
2014/03/17 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
大学毕业论文致谢词
2015/05/14 职场文书