dojo.provide("dojox.timing.doLater"); dojo.experimental("dojox.timing.doLater"); dojox.timing.doLater = function(/*anything*/conditional,/*Object ?*/context, /* Number ? */interval){ // summary: // Check if a parameter is ready, and if not, // "do later". doLater will ping the parameter // until it evaluates to something (truthy). // It thens calls the caller with original // arguments, using the supplied context or // window. // description: // dojox.timing.doLater(conditional) is testing if the call // should be done later. So it returns // true if the param is false. // arguments: // conditional: anything // Can be a property that eventually gets set, or // an expression, method... anything that can be // evaluated. // context: Object // The namespace where the call originated. // Defaults to global and anonymous functions // interval: Number // Poll time to check conditional in Milliseconds // example: // | setTimeout(function(){ // | if(dojox.timing.doLater(app.ready)){return;} // | console.log("Code is ready! anonymous.function SUCCESS") // | },700); // if(conditional){ return false; } // Boolean var callback = dojox.timing.doLater.caller, args = dojox.timing.doLater.caller.arguments; interval = interval || 100; context = context || dojo.global; setTimeout(function(){ callback.apply(context, args); },interval); return true; // Boolean }