delegate function calling.
by techsin
JavaScript
(function(){Object.defineProperty(window,"log",{set:function(a){console.log(a)}})})();
A(D(C));
B(D(C));
function D() {
var x = window.funcsToCall= window.funcsToCall || {};
var f=arguments[0],n=f.name;
log = x.hasOwnProperty(n);
(!x.hasOwnProperty(n))?x[n]=0:x[n]++;
log = x[n];
return function(){
(x[n]==0)?(f(),delete x[n]):x[n]--;
}
}
NOT REALLY TRUE AS FUNCTION CALLING DO NEED TO CALL FUNCTION K SO THEY HAVE CALLBACK
function C(){console.log('hey');}
function A(k){setTimeout(function(){log='timeoutA';k();},1);}
function B(k){setTimeout(function(){log='timeoutB';k();},3000);}
//delay simulated using timeouts...