所以這個問題是從我最近問的另一個分支,這更多的是好奇心。jQuery腳本加載隊列
我的另一個問題涉及動態加載外部js庫。在我的示例中,我使用了.getScript()來導入jQuery模板,然後使用Knockout.js。每次完成加載時,我都會發出警報,以確保它們正確加載。
下面是我用的是近似的代碼(似乎是「爲了」上的jsfiddle工作,所以它可以一直在我的代碼的問題仍然有效,但。):
$.getScript("https://raw.github.com/jquery/jquery-tmpl/master/jquery.tmpl.js", function(){ alert('tmpl finished loading!'); });
$.getScript("http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.2.0.js", function(){ alert('Knockout finished loading!'); });
我發現,當我載入頁面時,Knockout的警報在tmpl庫之前發佈,即使它列在第二位。
我的假設是他們會以隊列的方式同步加載,在加載下一個之前等待前一個完成。看來情況並非如此。
所以我要求驗證這個假設,並解釋爲什麼這是/不是這種情況。我還想知道是否有另一種[更好]的方法來排隊腳本加載,這樣我就不會因爲未加載腳本的依賴而遇到未定義的問題。
記住,javascript只是繼續前進,不管前一個函數是否完成。事實上,這是異步加載的定義。你實際上在想他們會同步加載。 –
Woops,你是對的。我的意思是同步。 – Jon
順便說一句,'ping raw.github.com ::〜110ms','ping cloud.github.com ::〜22ms'這就是爲什麼第二個腳本首先被加載而不是你的代碼中的東西,除了問題之外在接受的答案中概述。並感謝現在遇到它...... – dualed