/*
异步模块模式:
请求发出后,继续其他业务逻辑,知道模块加载完成执行后续的逻辑,实现模块开发中对模块加载完成后的引用。
*/
// 创建或调用模块
F.module = function (url, modDeps, modCallback) {
var args = [].slice.call(arguments);
var callback = arg.pop();
var deps = (args.length && args[args.length - 1] instanceof Array ? args.pop() : [];
var url = args.length ? args.pop() : null;
var params = [];
var depsCount = 0;
var i = 0;
var len ;
if (len = deps.length) {
while(i < len) {
(function (i) {
depsCount++;
loadModule(deps[i], function (mod) {
params[i] = mod;
depsCount--;
if (depsCount === 0) {
setModule(url, params, callback);
}
})
})(i);
i++;
}
} else {
setModule(url, [], callback);
}
}