如何在没有回调的情况下获取已加载的模块?
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();
}
答案 0 :(得分:1)
要检查模块是否实际已加载,您需要使用require.defined
而不是require.specified
。 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();
}
答案 1 :(得分:0)
你可以这样做:
require(['expected_module'], function(module){
module.destructor(); //call methods in your module
});
callback
是必要的,因为require
加载了所有模块及其依赖项async
。只有在加载了所有依赖项时,才会执行回调内部编写的代码。