B.m , B , . plugins, , . rq ( Q promises), promise ( jquery, Q, RSVP ES6 promises), promiseme (?).
, B moduleB, . require moduleB. A <PLUGIN>!B. . promise jquery:
define(["promise!B"], function(moduleB){
moduleB.m();
})
define([ "dep1", "dep2", "jquery" ], function( dep1, dep2, $ ) {
var dyndeps = dep2.getDynDeps();
var moduleB = {};
var loaded = new $.Deferred();
require(dyndeps, function() {
moduleB.m = function() { ... };
loaded.resolve(moduleB);
})
return loaded.promise();
});
, (A.js) , B . B , :
define(["B"], function(moduleB){
moduleB.m();
})
define([ "promise!dynamicB" ], function( moduleB ) {
return moduleB;
});
define("dynamicB", ["dep1", "dep2", "jquery"], function() {
var dyndeps = dep2.getDynDeps();
var loaded = new $.Deferred();
var moduleB = {};
require(dyndeps, function() {
moduleB.m = function() { ... };
loaded.resolve(moduleB);
})
return loaded.promise();
});
B , .