This isn't easy to do. jQuery uses a specific queue system.
Suppose you want to do it without jQuery, you would have to implement a queue yourself.
For example this very simplistic implementation :
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
If you want to chain another function not defined in foo, you may do
var bar = new foo().delay(3000).start()
.addFunction(function(){alert("another chained one")});
Demonstration
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…