私は現在、非常に特定の順序でロードしなければならないいくつかのJavaScriptライブラリを使用して立ち往生しています。jQueryのgetScript()は非同期であるため、すべてのスクリプトのダウンロードを非常に迅速に開始し、終了すると実行します。それらは順番に実行されないので、ライブラリから複数のエラーが発生します。
残念ながら、これらのライブラリを変更または変更することはできません。私がやろうとしているのは、JavaScriptライブラリをダウンロードするメソッドを使用し、コールバックで、すべてのライブラリのロードが完了するまでそれ自体を呼び出すようにすることです。
これは最初のファイルで機能します。2番目のファイルが発生すると、コールバック内のコンテキストが失われ、再帰メソッドを呼び出すことができなくなります。
何か案は?
コードのペアダウンバージョン:
function loadFiles (CompletedCallback) {
var Files = getFiles(); // This is an array of js files to load
var currentFileIndex = 0;
function processFile (file) {
$.getScript(file[currentFileIndex], $.proxy(function () {
++currentFileIndex;
if (currentFileIndex === Files.length) {
CompletedCallback();
} else {
processFile(Files[currentFileIndex]);
}
}, this);
};
processFile(Files[currentFileIndex]);
};