mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 10:45:47 +00:00
feature(util) asyncCall -> exec.parallel
This commit is contained in:
parent
0025e4608e
commit
cd1b9008e4
9 changed files with 69 additions and 56 deletions
|
|
@ -46,7 +46,7 @@
|
|||
cloudfunc.check();
|
||||
|
||||
gulp.src('test/lib/util.js')
|
||||
.pipe(mocha({reporter: 'progress'}))
|
||||
.pipe(mocha({reporter: 'min'}))
|
||||
.on('error', onError);
|
||||
});
|
||||
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
var version = 'v' + Info.version,
|
||||
name = 'ChangeLog';
|
||||
|
||||
Util.asyncCall([
|
||||
Util.execParallel([
|
||||
Util.bind(exec, 'shell/log.sh ' + version),
|
||||
Util.bind(fs.readFile, name),
|
||||
], function(execParams, readParams) {
|
||||
|
|
|
|||
|
|
@ -410,7 +410,7 @@ var Util, DOM, CloudFunc;
|
|||
CloudCmd.getLinkTemplate
|
||||
];
|
||||
|
||||
Util.asyncCall(funcs, function(templFile, templPath, templLink) {
|
||||
Util.exec.parallel(funcs, function(templFile, templPath, templLink) {
|
||||
var n, found, varCurrent, varName, current,
|
||||
dir = DOM.getCurrentDirName(),
|
||||
name = DOM.getCurrentName(),
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ var CloudCmd, Util, DOM;
|
|||
|
||||
if (!Loading) {
|
||||
showLoad();
|
||||
Util.asyncCall(funcs, fillTemplate);
|
||||
Util.exec.parallel(funcs, fillTemplate);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1476,7 +1476,7 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog;
|
|||
if (!allowed || isDir)
|
||||
Util.exec(callback);
|
||||
else {
|
||||
Util.asyncCall([
|
||||
Util.execParallel([
|
||||
function(callback) {
|
||||
Storage.get(nameData, function(data) {
|
||||
Util.exec(callback, data);
|
||||
|
|
|
|||
|
|
@ -86,13 +86,13 @@ var CloudCmd, Util, DOM, CloudFunc, $;
|
|||
if (options)
|
||||
Object.keys(options).forEach(function(name) {
|
||||
var func,
|
||||
asyncCall = Util.asyncCall,
|
||||
execParallel = Util.exec.parallel,
|
||||
item = options[name],
|
||||
isFunc = Util.isFunction(item);
|
||||
|
||||
if (isFunc) {
|
||||
func = config[name];
|
||||
config[name] = Util.bind(asyncCall, [item, func]);
|
||||
config[name] = Util.bind(execParallel, [item, func]);
|
||||
} else {
|
||||
config[name] = options[name];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@
|
|||
func = Util.retExec(callback, names);
|
||||
|
||||
Util.ifExec(!config.minify, func, function(callback) {
|
||||
Util.asyncCall(funcs, callback);
|
||||
Util.exec.parallel(funcs, callback);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
if (!this.MinFolder)
|
||||
this.MinFolder = Minify.MinFolder;
|
||||
|
||||
Util.asyncCall([isChanged, isExist], function(changed, exists) {
|
||||
Util.exec.parallel([isChanged, isExist], function(changed, exists) {
|
||||
if (changed || !exists)
|
||||
Minify.optimize(name, params);
|
||||
else
|
||||
|
|
|
|||
103
lib/util.js
103
lib/util.js
|
|
@ -11,42 +11,6 @@
|
|||
function UtilProto() {
|
||||
var Util = this;
|
||||
|
||||
this.asyncCall = function(funcs, callback) {
|
||||
var i, func,
|
||||
funcsCount = funcs.length,
|
||||
count = 0,
|
||||
allData = [];
|
||||
|
||||
for (i = 0; i < funcsCount; i++) {
|
||||
func = funcs[i];
|
||||
callCheckFunc(i, func);
|
||||
}
|
||||
|
||||
function checkFunc(num, data) {
|
||||
var i, n = data.length,
|
||||
params = [];
|
||||
|
||||
++count;
|
||||
|
||||
if (n >= 2) {
|
||||
for (i = 0; i < n; i++)
|
||||
params[i] = data[i];
|
||||
|
||||
allData[num] = params;
|
||||
} else
|
||||
allData[num] = data[0];
|
||||
|
||||
if (count === funcsCount)
|
||||
Util.retExec(callback).apply(null, allData);
|
||||
}
|
||||
|
||||
function callCheckFunc(num, func) {
|
||||
Util.exec(func, function() {
|
||||
checkFunc(num, arguments);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
* bind function to arguments without context
|
||||
*/
|
||||
|
|
@ -821,16 +785,65 @@
|
|||
* ...
|
||||
* @param pArgN
|
||||
*/
|
||||
this.exec = function(callback) {
|
||||
var ret,
|
||||
isFunc = Util.isFunction(callback),
|
||||
args = Util.slice(arguments, 1);
|
||||
|
||||
if (isFunc)
|
||||
ret = callback.apply(null, args);
|
||||
this.exec = new ExecProto();
|
||||
|
||||
function ExecProto() {
|
||||
/**
|
||||
* function do save exec of function
|
||||
* @param pCallBack
|
||||
* @param pArg1
|
||||
* ...
|
||||
* @param pArgN
|
||||
*/
|
||||
var exec = function(callback) {
|
||||
var ret,
|
||||
isFunc = Util.isFunction(callback),
|
||||
args = Util.slice(arguments, 1);
|
||||
|
||||
if (isFunc)
|
||||
ret = callback.apply(null, args);
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
return ret;
|
||||
};
|
||||
exec.parallel = function(funcs, callback) {
|
||||
var i, func,
|
||||
funcsCount = funcs.length,
|
||||
count = 0,
|
||||
allData = [];
|
||||
|
||||
for (i = 0; i < funcsCount; i++) {
|
||||
func = funcs[i];
|
||||
callCheckFunc(i, func);
|
||||
}
|
||||
|
||||
function checkFunc(num, data) {
|
||||
var i, n = data.length,
|
||||
params = [];
|
||||
|
||||
++count;
|
||||
|
||||
if (n >= 2) {
|
||||
for (i = 0; i < n; i++)
|
||||
params[i] = data[i];
|
||||
|
||||
allData[num] = params;
|
||||
} else
|
||||
allData[num] = data[0];
|
||||
|
||||
if (count === funcsCount)
|
||||
Util.retExec(callback).apply(null, allData);
|
||||
}
|
||||
|
||||
function callCheckFunc(num, func) {
|
||||
Util.exec(func, function() {
|
||||
checkFunc(num, arguments);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return exec;
|
||||
}
|
||||
|
||||
/**
|
||||
* exec function if it exist in object
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
});
|
||||
});
|
||||
|
||||
describe('asyncCall', function() {
|
||||
describe('exec.parallel', function() {
|
||||
it('should execute a couple functions async and return results in callback', function() {
|
||||
var WORD = 'hello world',
|
||||
funcSlow = function(callback) {
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
}, 1);
|
||||
};
|
||||
|
||||
Util.asyncCall([funcSlow, funcFast], function(hello, world) {
|
||||
Util.exec.parallel([funcSlow, funcFast], function(hello, world) {
|
||||
WORD.should.equal(hello + ' ' + world);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue