This is not easy to do. jQuery uses a specific queuing system .
Suppose you want to do this without jQuery, you have to implement the queue yourself.
For example, this very simplified 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 link another function not defined in foo, you can do
var bar = new foo().delay(3000).start() .addFunction(function(){alert("another chained one")});
Demonstration
Denys seguret
source share