如何在没有回调的情况下获取已经加载的模块?

时间:2017-01-10 22:02:38

标签: requirejs

如何在没有回调的情况下获取已加载的模块?

module_name = 'expected_module';
if(require.specified(module_name)) {
  module = require.get('module_name'); //I want to have here get function, but this function is absent in requirejs
  module.destructor();
}

2 个答案:

答案 0 :(得分:1)

要检查模块是否实际已加载,您需要使用require.defined而不是require.specifiedrequire.specified仅检查是否在某个时间点请求了模块。它可能尚未加载

使用require.defined检查模块 已加载后,只需执行require调用,模块名称作为第一个参数即可。调用的返回值将是模块。例如:

if (require.defined("foo")) {
    var foo = require("foo");
    // Do stuff with foo...
}

虽然通常需要传递一组依赖项和一个回调到require调用,但RequireJS支持像上面那样调用require。但是,如果已加载模块,它将成功 ,但我们会使用require.define检查该模块。

因此,您的代码应修改为:

module_name = 'expected_module';
if(require.defined(module_name)) {
  module = require('module_name');
  module.destructor();
}

答案 1 :(得分:0)

你可以这样做:

require(['expected_module'], function(module){

    module.destructor();   //call methods in your module

});

callback是必要的,因为require加载了所有模块及其依赖项async。只有在加载了所有依赖项时,才会执行回调内部编写的代码。