public
Last active

Defers execution of the callback until exec is run. At that point, all future calls are executed immediately.

  • Download Gist
Defer.js
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
function Defer(callback){
if(!this instanceof Defer)
return new Defer(callback);
 
var queue = []
, callback = callback
, slice = Array.prototype.slice
, changeling = function(){
queue.push({
'context': this,
'args' : slice.call(arguments, 0)
});
}
, wrapper = function(){
changeling.apply(this, slice.call(arguments, 0));
}
;//var
 
wrapper.exec = function(){
var call;
while(call = queue.pop()){
callback.apply(call.context, call.args);
}
 
changeling = callback;
}
 
return wrapper;
}

var func = function(x) { return x };
func.hello = function(who) { return "hey baby, " + who; }

func(10) // => 10
func.hello("chad") // => "hey baby, chad"

var func = (function() {
  var privateData = 0;

  var _func = function(x) { privateData ++; return x; };
  _func.hello = function(who) { return "you called " + privateData + " times"; }

  return _func;
})();

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.