Return async requirejs 完成回调值到外部函数

Return async requirejs finish callback value to outside function

我有一个问题,我需要等到 requirejs 加载一些 "secondary" 依赖项,然后 return 一个计算对象到我的 requirejs 模块。

假设我知道我可以在第一个 define 语句中传递所有依赖项,是否有其他方法可以做到这一点?

示例:

define(
    ['require', 'jquery', 'underscore'], 

    function (require, $, _) 
    {
        var fooBar = require(['foo', 'bar'], function(foo, bar) 
        {
            return new FooBar(foo, bar);
        });

        return fooBar;
    }
);

这个模块 return 给我一个 localRequire 回调,相反我想从第二个 require 语句中获取 return 值,所以我的 FooBar 对象。

我怎样才能实现类似的事情? 谢谢,如果我犯了错误,请原谅我的英语,我是意大利人..

define(function (require) { 
   var $ = require('jquery');
   var _ = require('underscore');
   var foo = require('foo');
   var bar  = require('bar');
  return new FooBar(foo, bar);   
});

以下代码使用 require 作为 SYNC 请求,但在浏览器中,如果依赖项在同一文件中定义或在调用 require 之前加载,则可以使用 SYNC 请求。 大多数时候有用 javascript 使用最小化器。

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 来承诺您将 return 新对象:

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