這並不容易。 jQuery使用specific queue system。
假設你想在沒有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;
};
};
Demonstration
如果你想鏈foo中沒有定義的另一個功能,你可以這樣做
var bar = new foo().delay(3000).start()
.addFunction(function(){alert("another chained one")});
Demonstration
我不明白爲什麼有人投票決定關閉。這是一個非常真實有趣的問題。 –