js 鏈?zhǔn)窖舆t執(zhí)行DOME
更新時(shí)間:2012年01月04日 17:33:22 作者:
js 鏈?zhǔn)窖舆t執(zhí)行DOME,需要的朋友可以參考下。
這樣的形式執(zhí)行:
d.wait(3000).run(function(m){ //等待3秒
alert('從前有座山');
}).wait(1000).run(function(m){ //等待1秒
alert('山里有座廟');
}).wait(2000).run(function(m){ //等待2秒
alert('廟里有一個(gè)老和尚給一個(gè)小和尚講故事');
}).wait(3000).run(function(m){ //等待3秒
alert('講的故事是:');
}).goStart(); //跳到第一條重新執(zhí)行,這句拿掉就只執(zhí)行一次
<!doctype html>
<html>
<head>
<title>異步執(zhí)行</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('廟里有一個(gè)老和尚給一個(gè)小和尚講故事');
}).wait(2000).run(function(m){
alert('講的故事是:');
}).goStart();
</script></body>
</html>
復(fù)制代碼 代碼如下:
d.wait(3000).run(function(m){ //等待3秒
alert('從前有座山');
}).wait(1000).run(function(m){ //等待1秒
alert('山里有座廟');
}).wait(2000).run(function(m){ //等待2秒
alert('廟里有一個(gè)老和尚給一個(gè)小和尚講故事');
}).wait(3000).run(function(m){ //等待3秒
alert('講的故事是:');
}).goStart(); //跳到第一條重新執(zhí)行,這句拿掉就只執(zhí)行一次
復(fù)制代碼 代碼如下:
<!doctype html>
<html>
<head>
<title>異步執(zhí)行</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('廟里有一個(gè)老和尚給一個(gè)小和尚講故事');
}).wait(2000).run(function(m){
alert('講的故事是:');
}).goStart();
</script></body>
</html>
相關(guān)文章
js遍歷、動(dòng)態(tài)的添加數(shù)據(jù)的小例子
js遍歷、動(dòng)態(tài)的添加數(shù)據(jù)的小例子,需要的朋友可以參考一下2013-06-06深入解析js輪播插件核心代碼的實(shí)現(xiàn)過(guò)程
這篇文章主要深度揭密了js輪播插件核心代碼的實(shí)現(xiàn)過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04JavaScript如何刪除數(shù)組元素(總結(jié)篇)
在JavaScript中,除了Object之外,Array類型恐怕就是最常用的類型了,與其他語(yǔ)言的數(shù)組有著很大的區(qū)別,JavaScript中的Array非常靈活,今天我就來(lái)總結(jié)了一下JavaScript中Array刪除的方法,感興趣的朋友跟隨小編一起看看吧2023-12-12js unicode 編碼解析關(guān)于數(shù)據(jù)轉(zhuǎn)換為中文的兩種方法
這篇文章主要介紹了js unicode 編碼解析關(guān)于數(shù)據(jù)轉(zhuǎn)換為中文的兩種方法,需要的朋友可以參考下2014-04-04javascript實(shí)現(xiàn)在網(wǎng)頁(yè)任意處點(diǎn)左鍵彈出隱藏菜單的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)在網(wǎng)頁(yè)任意處點(diǎn)左鍵彈出隱藏菜單的方法,設(shè)計(jì)鼠標(biāo)事件及css樣式操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05JavaScript中常用的數(shù)組過(guò)濾方法例子
這篇文章主要給大家介紹了關(guān)于JavaScript中常用的數(shù)組過(guò)濾方法的相關(guān)資料,數(shù)組過(guò)濾器方法是JavaScript中使用最廣泛的方法之一,它允許我們快速過(guò)濾出具有特定條件的數(shù)組中的元素,需要的朋友可以參考下2023-11-11