作家
登录

js 链式延迟执行DOME

作者: 来源:www.28hudong.com 2013-03-30 00:36:00 阅读 我要评论

这样的形式执行: 复制代码 代码如下: 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>

  推荐阅读

  Jquery中删除元素的实现代码

语法: empty() remove(expr); empty用来删除指定元素的子元素,remove用来删除元素,或者设定细化条件执行删除,如: html 复制代码 代码如下: <div> <p id="emptyTest">此标签的使用empty方法删除</p> <p>以下的>>>详细阅读


本文标题:js 链式延迟执行DOME

地址:http://www.17bianji.com/kaifa2/JS/23761.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)