1

私が取り組んでいるプロジェクトには、多くの javascript ファイルと css ファイルがあります。この require("relative file name") のようなものを使用して、リソース ファイルの読み込みを処理する企業ライブラリを使用しています。しかし、一部のページでは、このライブラリを使用したくなく、プレーンな jQuery を使用したいと考えています。スクリプトまたはスタイル タグを使用して JavaScript を読み込むことができません (コンテンツが iframe 内にあり、プロキシを使用して他のページに配置されているため、実行時にすべての URL が計算されます)。これらのファイルをロードするには、jQuery と Javascript しか使用できません。

今、私は使用できることを知っています

$.getScript( <myFileURL>, function( data, textStatus, jqxhr ) {
                  console.log( "Load was performed." );
                  if(jqxhr.status = 200){
                      //call another resource file?
                  }               
            });

唯一のことは、リソースの JavaScript ファイルをロードするために非常に多くの非同期呼び出しを開始するのはやり過ぎのように思われることです。すべてのリソース ファイルが読み込まれないと、処理を進めることができません。すべてのリソース ファイルを一度に読み込み、読み込みが完了したらページを続行する他の方法はありますか。

編集:これを試しました-

$.when($.getScript( <file1URL>),
               $.getScript( <file2URL>)).then(function(){
                customeFunction();// breakpoint here never gets hits.
          });

ネットワークタブを確認すると、ファイルが正常にダウンロードされていることがわかります。ただし、customFunction() 関数は呼び出されません。ありがとう

4

1 に答える 1

4

$.getScriptはpromise オブジェクトを返すため、次のようにできます。

$.when($.getScript( "file1.js"),
       $.getScript( "file2.js"),
       $.getScript( "file3.js")).then(function(){
     //Your code.
});

リクエストは、前のリクエストが完了するのを待たずに開始されます。すべてのスクリプトがロードされると、thenハンドラーが呼び出されます。

または、ファイル名の配列がある場合:

files = ["one.js", "two.js", "three.js"];
promises = $.map(files, function(file){
    return $.getScript(file.valueOf());
});
$.when.apply($, promises).then(function(){});
于 2013-09-17T21:39:22.280 に答える