这是一个 hacky 解决方案,如果可能,您应该真正考虑重新排列模块的方法,但这至少应该有效:
var inside = null;
function outside () {
try { inside(); }
catch (err) { /* log error or throw away, whatever */ }
}
require(['dojo/_base/declare', ..., 'your/module/function'], function (declare, ..., myModuleFunction) {
inside = myModuleFunction;
outside();
});
只是require
包含函数的模块(在示例中命名),将其存储在 require 之外的变量"your/module/function"
中,并在已经在外部定义的函数中调用它。我添加了一个块,因为它是一个很好的衡量标准,可以防止你的代码在你过早调用时崩溃。myModuleFunction
try-catch
outside
如果 dojo require 块中的函数不是模块,则几乎相同:
var inside = null;
function outside () {
try { inside(); }
catch (err) { /* log error or throw away, whatever */ }
}
require(['dojo/_base/declare'], function (declare) {
inside = function () { console.log('Inside the require block'); };
outside();
});
除了你不必这样做require
。