feature(util) asyncCall -> exec.parallel

This commit is contained in:
coderaiser 2014-05-23 02:33:40 -04:00
parent 0025e4608e
commit cd1b9008e4
9 changed files with 69 additions and 56 deletions

View file

@ -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) {

View file

@ -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(),

View file

@ -41,7 +41,7 @@ var CloudCmd, Util, DOM;
if (!Loading) {
showLoad();
Util.asyncCall(funcs, fillTemplate);
Util.exec.parallel(funcs, fillTemplate);
}
};

View file

@ -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);

View file

@ -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];
}

View file

@ -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);
});
}

View file

@ -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

View file

@ -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

View file

@ -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);
});
});