/***
|
* amd loader plugin which is used to load modules by sequence.
|
* mainly, this plugin is used to load js files which is not a amd module.
|
***/
|
define([
|
"dojo/Deferred",
|
"dojo/promise/all"
|
], function(Deferred, all) {
|
var require;
|
function doLoad(modules){
|
var currentIndex = 0, allDefs = [], i, def;
|
for(i = 0; i < modules.length; i++){
|
def = new Deferred();
|
def.module = modules[i];
|
allDefs.push(def);
|
}
|
|
loadModule(allDefs, currentIndex);
|
|
return allDefs;
|
}
|
|
function loadModule(allDefs, currentIndex){
|
if(currentIndex + 1 > allDefs.length){
|
return;
|
}
|
require([allDefs[currentIndex].module], function(){
|
allDefs[currentIndex].resolve();
|
currentIndex ++;
|
loadModule(allDefs, currentIndex);
|
});
|
}
|
return {
|
load: function(id, _require, callback) {
|
var parts = id.split(",");
|
require = _require;
|
if (parts.length === 0) {
|
callback(null);
|
} else {
|
all(doLoad(parts)).then(function(){
|
callback();
|
});
|
}
|
}
|
};
|
});
|