Это хакерское решение, и вы должны действительно подумать о способе перестановки ваших модулей, если это возможно, но это должно по крайней мере работать:
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
модуль, который содержит функцию (названную"your/module/function"
и myModuleFunction
в примере), сохраните его в переменной вне запроса и вызовите его в функции, которая уже была определена за пределами .Я добавил try-catch
блок, потому что это хорошая мера и предотвращает взрыв вашего кода, если вы вызываете outside
слишком рано.
В случае, если функция внутри dojo require block isnэто не модуль, это почти то же самое:
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
это.