2014-05-08 37 views
1

我正在使用Ember.js構建一個應用程序。網站的管理部分需要使用一些各種JavaScript庫。異步下載幾個js腳本,然後按順序執行它們

我只想在訪問該網站的管理路線時下載這些庫。

我想我可以做類似下面的StackOverflow的答案:

https://stackoverflow.com/a/11803418/2014469

$.when(
    $.getScript("/mypath/myscript1.js"), 
    $.getScript("/mypath/myscript2.js"), 
    $.getScript("/mypath/myscript3.js"), 
    $.Deferred(function(deferred){ 
     $(deferred.resolve); 
    }) 
).done(function(){ 

    //place your code here, the scripts are all loaded 

}); 

但我擔心執行這些文件的順序。

假設myscript2.js依賴於myscript1.js中的某些功能。

myscript1.js加載(!),並執行(!)myscript2.js過嗎?

如果不是,我該如何異步下載所有文件,然後按順序執行它們?我想到了剛剛鏈.then()

$.getScript("/mypath/myscript1.js") 
.then(function{$.getScript("/mypath/myscript2.js")}) 
.then(function{$.getScript("/mypath/myscript3.js")}) 

但是會等到一個已經下載並執行它甚至開始下載前的未來 - 我想下載所有在同一時間,但隨後在執行它們訂購。

感謝您的幫助。

+2

http://requirejs.org/ – undefined

+0

我一直在找 - 但我認真只需要在我的網站上的一個地方,表面看來,它不需要包含另一個庫來加載這些其他人......縮小版*僅* 14kb雖然...嗯... –

+0

你在找什麼叫做promise鏈接。我會提供一個樣本,但我目前在我的牢房。 –

回答

1

您需要一個用於管理腳本之間依賴關係的JavaScript加載器。

如果requirejs太大您的需求,你不打算自己寫一個,看看這些小庫: http://microjs.com/#loader