The only way I can think now is to include a callback. Sort of:
define([], function() { var exports = {}; exports.Maps = function (maps) { this.hello = function () { console.log(maps); }; }; exports.Factory = function (apiKey) { this.manufacture = function (loadedCallback) { require(['http://maps.googleapis.com/maps/api/js?libraries=places&key=' + apiKey + '&sensor=true'], function () { loadedCallback(new exports.Maps(window.google.maps)); }); }; }; return exports; });
Then, to use it, you must:
require(["foo"], function (Foo) { var apiKey = "blablabla", factory = new Foo.Factory(apiKey); factory.manufacture(function (Maps) { Maps.hello(); }); });
source share