我有一个问题,我需要等到requirejs加载一些“二级”依赖项,然后将一个计算对象返回到我的requirejs模块。
当然,我知道我可以在第一个define语句中传递所有依赖项,是否有其他方法可以做到这一点?
示例:
define(
['require', 'jquery', 'underscore'],
function (require, $, _)
{
var fooBar = require(['foo', 'bar'], function(foo, bar)
{
return new FooBar(foo, bar);
});
return fooBar;
}
);
这个模块返回一个localRequire回调,而不是我想从第二个require语句获取返回值,所以我的FooBar对象。
我怎样才能达到类似的目的? 谢谢,对不起我的英语,如果我犯了错误,我是意大利人..
答案 0 :(得分:0)
define(function (require) {
var $ = require('jquery');
var _ = require('underscore');
var foo = require('foo');
var bar = require('bar');
return new FooBar(foo, bar);
});
答案 1 :(得分:0)
以下代码使用require作为SYNC请求,但在浏览器中,如果依赖项在同一文件中定义或在调用require之前加载,则可以使用SYNC请求。 大部分时间都是有用的javascript minimizer。
define('foo', ['dep1', 'dep2'], function(){
return foo;
});
define('bar', ['dep1', 'dep2'], function(){
return bar;
});
define(
['require', 'jquery', 'underscore'],
function (require, $, _)
{
var foo = require('foo');
var bar = require('bar');
return new FooBar(foo, bar);
}
);
其他解决方案是使用Promises承诺您将返回新对象:
define(
['require', 'jquery', 'underscore'],
function (require, $, _)
{
var promise = new Promise(function(fulfill, reject){
require(['foo', 'bar'], function(foo, bar)
{
fulfill(new FooBar(foo, bar));
});
});
return promise;
}
);