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 相关文章推荐
jQuery获得IE版本不准确webbrowser的解决方法
Feb 23 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
基于JavaScript实现飘落星星特效
Aug 10 Javascript
JS实现多物体运动的方法详解
Jan 23 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
详解Vue项目部署遇到的问题及解决方案
Jan 11 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
Vue数字输入框组件示例代码详解
Jan 15 Javascript
详解React的回调渲染模式
Sep 10 Javascript
DWR内存兼容及无法调用问题解决方案
Oct 16 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
php实现修改新闻时删除图片的方法
2015/05/12 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
Python字符串处理之count()方法的使用
2015/05/18 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python中生成Epoch的方法
2017/04/26 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
Pycharm Git 设置方法
2020/09/15 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
数字漫画:comiXology
2020/06/13 全球购物
升职自荐信范文
2013/10/05 职场文书
优秀应届生推荐信
2013/11/09 职场文书
完美的中文自荐信
2014/05/24 职场文书
公司开除员工通知
2015/04/22 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
初二数学教学反思
2016/02/17 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书