「ロード済み」は少しあいまいな言葉です。
モジュールに対してリクエストが行われたことを意味する場合。その指定。モジュール定義の依存関係またはモジュール名を使用した require 呼び出しのいずれかとして、モジュールがどこかで必要になるとすぐに、フォローは true を返します。
require.specified(moduleID);
モジュールが解決されてメモリにロードされると、つまり、モジュールのソースがフェッチされてロードされ、モジュールの定義関数の実行が終了すると、. 以下は true を返します。
require.defined(moduleID);
で調べることもできますrequirejs.s.contexts._.defined
。このようにライブラリのデータ構造を検査するのは少しハックな方法ですが、モジュールがロードされているかどうかを確認したい場合に備えて、ブラウザー (firebug) で機能します。私はfirebugとrequirejs 2.1.4で以下をテストしました。
console.log(window.requirejs.s.contexts._.defined['SOME_MODULE']);
このメソッドは、firebug を使用してモジュールの内部コンテンツ (オブジェクト/プロトタイプのプロパティ) を検査するのにも役立ちます。
コードをさらに実行する前に、重要なモジュールがロードされていることを確認する必要がある場合。成功のコールバックを伴う require 呼び出しが機能します。
require([moduleID], function(moduleExport){
//The module is loaded, proceed to the next step
//This is also an inherent load check
}, function (error) {
//The module cant be loaded, handle the exception case
});
次のスニペットは、上記のすべてを示しています
console.log(require.specified('TEST_MODULE')); //false if the module isn't required yet
require(['TEST_MODULE'], function(TEST_MODULE){
console.log(require.defined('TEST_MODULE')); //true
console.log(require.s.contexts._.defined['TEST_MODULE'] ? true : false); //true
}, function (error) {
console.log('TEST_MODULE cant be loaded');
});
console.log(require.defined('TEST_MODULE')); //false if the module isn't ready yet
console.log(require.specified('TEST_MODULE')); //true
**グローバルスコープでrequireが他の目的に使用される場合は、requireの代わりにrequirejsを使用できます。
** 上記はすべて、テストしている場所に require/requirejs [global] への参照があることを前提としています。