2016-11-02 16 views
0

javascriptファイルの配列を持つjsonファイルがあります。私はこれを取得し、それぞれをループし、各スクリプトを動的にロードします。私の質問は、すべてのスクリプトがロードされた後に動的にロードされたクラスのいくつかを使用したいのですが、それらがすべてロードされたときにどのようにしてクラスを使用できるのかわからないのですか?json設定ファイルから動的にスクリプトを読み込む

$.getJSON('Scripts/Nodes/plugins.json', 
       function (data) { 
        for (var script in data) { 
         $.getScript(script, function (data) { 

         }); 
        } 
       }); 

私がスクリプトをループし、それらを一つずつロードし、すべてのスクリプトがロードされたときにどのように私は知っている非同期(async)スクリプトの各負荷があるんだので?これはすべて起動時に行われるので、すべてロードされた後は、私が行う必要がある機能を呼び出すのが理想的です。

+1

'success'コールバック関数とカウンタを利用できます。各 '$ .getScript'の' success'コールバックでカウンタをインクリメントしてください。一度 'counter == data.length'すれば、それらはすべてロードされていることがわかります。 – Gavin

答えて

1

Gavinがコメントで述べたように、getScript呼び出しでsuccess関数を活用することができます。カウンターをインクリメントするか、必要なクラスが定義されているかどうかをチェックする関数を実行し、そのクラスを使用する必要なコードを実行することができます。

また、タイムアウトを利用することもできますが、タイムアウトがファイルの読み込みと競合する可能性があるため、このことはお勧めしません。これは信頼できません。タイムアウトが長すぎると、ユーザーは長時間待つことになり、ユーザーエクスペリエンスが悪くなります。

正直なところ、javascriptファイルの読み込み方法を再考する必要があります。条件付きでプラグインをロードしない限り、packages.jsonファイルを取得してパッケージをループするのは意味がありません。ページにすべてのパッケージを含めるか、パッケージを連結して1つの 'core.js'ファイルに縮小する方がよいでしょう。これを行うためのさまざまなNPM/Grunt/JSPMツールがあります。

+0

これはウェブサイトではなくノードウェブキットアプリのためのものです。私は人々に自分のノードで私のアプリを拡張させて、彼らは正しいフォルダに自分のノードを置くだけで、このJSON設定ファイルに追加する必要があります。 – user441521

関連する問題