summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/timing/doLater.xd.js
blob: 8d339aadf5a031748d01b1a4bfbd12105543a079 (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
	Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


dojo._xdResourceLoaded(function(dojo, dijit, dojox){
return {depends: [["provide", "dojox.timing.doLater"]],
defineResource: function(dojo, dijit, dojox){if(!dojo._hasResource["dojox.timing.doLater"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.timing.doLater"] = true;
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
}

}

}};});