Yang's Blog

函数延时执行

在前端学习当中会经常遇到延时而产生的各种问题
下面是总结写的一段 JavaScript 函数延时执行的代码,是通过JavaScript原型的方式来实现的

函数延时执行JavaScript代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function _delay(){
function Delay(){
this.task = [];
}
Delay.prototype = {
then: function(fn, time){
this.task.push({fn: fn, time: time || 0});
return this;
},
run: function(){
var
_this = this,
len = this.task.length,
task = this.task.shift(),
next_task = this.task[0],
that;
(function(){
that = arguments.callee;
if (task.time > 0)
task.fn(next_task.fn);
next_task = _this.task[0];
if (_this.task.length > 0) {
if (task.time <= 0) {
task.fn(that);
}else{
setTimeout(that, task.time);
}
task = _this.task.shift();
}
}());
return this;
}
}
return new Delay();
}

函数方法调用很简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var delay = new _delay();
delay
.then(function(next) {
alert('是不是很郁闷呀');
}, 2000)
.then(function(next) {
alert('不要太郁闷哟');
setTimeout(function() {
alert('这么延时真的好郁闷哟')
next();
}, 3000)
})
.then(function(next) {
alert('你可以开心的浏览咯:-D:-D:-D');
}, 1000)
.run();

稍稍改动就可以一层层点下去了^_^

Enjoy it ? Donate me ! 欣赏此文?求鼓励,求支持!