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

Requirejs 如何在没有回调的情况下获取已加载的模块?,requirejs,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(); } 您可以这样做: require(['

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

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();
}
您可以这样做:

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

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

});

回调
是必需的,因为
需要
加载所有模块及其依赖项
异步
。回调中写入的代码仅在加载所有依赖项时执行。

要检查模块是否实际加载了,需要使用
require.defined
而不是
require.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();
}