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();
}