外部Javascriptファイルを同期的に読み込む方法
自前で実装するの大変だったな。。。
今はこんなのがあるみたいです。
http://coliss.com/articles/build-websites/operation/javascript/js-labjs.html
こんな感じで使えるみたいですね
Example 1: $LAB .script("script1.js") .script("script2.js") .script("script3.js") .wait(function(){ // wait for all scripts to execute first script1Func(); script2Func(); script3Func(); }); Example 2: $LAB .script({ src: "script1.js", type: "text/javascript" }) .script("script2.js") .script("script3.js") .wait(function(){ // wait for all scripts to execute first script1Func(); script2Func(); script3Func(); }); Example 3: $LAB .script("script1.js", "script2.js", "script3.js") .wait(function(){ // wait for all scripts to execute first script1Func(); script2Func(); script3Func(); }); Example 4: $LAB .script( [ "script1.js", "script2.js" ], "script3.js") .wait(function(){ // wait for all scripts to execute first script1Func(); script2Func(); script3Func(); }); Example 5: $LAB .script("script1.js").wait() // empty wait() simply ensures execution order be preserved for this script .script("script2.js") // both script2 and script3 depend on script1 being executed before .script("script3.js").wait() // but are not dependent on each other and can execute in any order .script("script4.js") // depends on script1, script2 and script3 being loaded before .wait(function(){script4Func();}); Example 6: $LAB .script("script1.js") // script1, script2, and script3 do not depend on each other, .script("script2.js") // so execute in any order .script("script3.js") .wait(function(){ // can still have executable wait(...) functions if you need to alert("Scripts 1-3 are loaded!"); }) .script("script4.js") // depends on script1, script2 and script3 being executed before .wait(function(){script4Func();}); Example 7: $LAB .setOptions({AlwaysPreserveOrder:true}) // tells this chain to implicitly "wait" on // execution (not loading) between each script .script("script1.js") // script1, script2, script3, and script4 *DO* depend on each .script("script2.js") // other, and will execute serially in order after all 4 have have .script("script3.js") // loaded in parallel .script("script4.js") .wait(function(){script4Func();});