use*_*408 8 javascript delay method-chaining
我想了解更多有关Javascript中的方法链接的信息,并想知道在没有jQuery的情况下为链中的下一个函数创建延迟的正确方法:
var foo = function() {
this.delay = function(per) {
setTimeout(start, per);
return this;
};
this.start = function() {
alert('start!');
};
};
var bar = new foo().delay(1000).start();
Run Code Online (Sandbox Code Playgroud)
这不容易做到.jQuery使用特定的队列系统.
假设您想在没有jQuery的情况下执行此操作,则必须自己实现队列.
例如,这个非常简单的实现:
var foo = function() {
var queue = [];
var timer;
this.delay = function(per) {
timer = setTimeout(function(){
timer = 0;
var f;
while (f = queue.shift()) f();
}, per);
return this;
};
this.addFunction = function(f) {
if (timer) queue.push(f);
else f();
return this;
};
this.start = function() {
this.addFunction(function(){alert('start')});
return this;
};
};
Run Code Online (Sandbox Code Playgroud)
如果你想链接另一个未在foo中定义的函数,你可以这样做
var bar = new foo().delay(3000).start()
.addFunction(function(){alert("another chained one")});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2723 次 |
| 最近记录: |