From cd1b9008e48627a85b8e310028ce08a6efe52584 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 23 May 2014 02:33:40 -0400 Subject: [PATCH] feature(util) asyncCall -> exec.parallel --- gulpfile.js | 4 +- lib/client.js | 2 +- lib/client/config.js | 2 +- lib/client/dom.js | 2 +- lib/client/view.js | 4 +- lib/server.js | 2 +- lib/server/minify.js | 2 +- lib/util.js | 103 ++++++++++++++++++++++++------------------- test/lib/util.js | 4 +- 9 files changed, 69 insertions(+), 56 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 887cca3e..13eaf626 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -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) { diff --git a/lib/client.js b/lib/client.js index 55657156..6bdbc0fa 100644 --- a/lib/client.js +++ b/lib/client.js @@ -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(), diff --git a/lib/client/config.js b/lib/client/config.js index 39986a5e..9c9d65bb 100644 --- a/lib/client/config.js +++ b/lib/client/config.js @@ -41,7 +41,7 @@ var CloudCmd, Util, DOM; if (!Loading) { showLoad(); - Util.asyncCall(funcs, fillTemplate); + Util.exec.parallel(funcs, fillTemplate); } }; diff --git a/lib/client/dom.js b/lib/client/dom.js index 29b67edd..e9694745 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -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); diff --git a/lib/client/view.js b/lib/client/view.js index 64e00bd3..9289615c 100644 --- a/lib/client/view.js +++ b/lib/client/view.js @@ -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]; } diff --git a/lib/server.js b/lib/server.js index 18446e49..f6f07758 100644 --- a/lib/server.js +++ b/lib/server.js @@ -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); }); } diff --git a/lib/server/minify.js b/lib/server/minify.js index bc700489..507afe58 100644 --- a/lib/server/minify.js +++ b/lib/server/minify.js @@ -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 diff --git a/lib/util.js b/lib/util.js index d5be47a1..60eb1803 100644 --- a/lib/util.js +++ b/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 diff --git a/test/lib/util.js b/test/lib/util.js index 05e488ab..ef69e227 100644 --- a/test/lib/util.js +++ b/test/lib/util.js @@ -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); }); });