From be83e8d4eec5c980d09eb21e1265d355d83eb9ea Mon Sep 17 00:00:00 2001 From: Louis Chatriot Date: Thu, 11 Feb 2016 15:06:03 +0100 Subject: [PATCH] Better formatting --- lib/executor.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/lib/executor.js b/lib/executor.js index 70ec590..add9d1a 100755 --- a/lib/executor.js +++ b/lib/executor.js @@ -11,17 +11,16 @@ function Executor () { // This queue will execute all commands, one-by-one in order this.queue = async.queue(function (task, cb) { - var callback - , lastArg = task.arguments[task.arguments.length - 1] - , i, newArguments = [] - ; + var newArguments = []; // task.arguments is an array-like object on which adding a new field doesn't work, so we transform it into a real array - for (i = 0; i < task.arguments.length; i += 1) { newArguments.push(task.arguments[i]); } + for (var i = 0; i < task.arguments.length; i += 1) { newArguments.push(task.arguments[i]); } + var lastArg = task.arguments[task.arguments.length - 1]; // Always tell the queue task is complete. Execute callback if any was given. if (typeof lastArg === 'function') { - callback = function () { + // Callback was supplied + newArguments[newArguments.length - 1] = function () { if (typeof setImmediate === 'function') { setImmediate(cb); } else { @@ -29,14 +28,12 @@ function Executor () { } lastArg.apply(null, arguments); }; - - newArguments[newArguments.length - 1] = callback; } else if (!lastArg && task.arguments.length) { - callback = function () { cb(); }; - newArguments[newArguments.length - 1] = callback; + // false/undefined/null supplied as callbback + newArguments[newArguments.length - 1] = function () { cb(); }; } else { - callback = function () { cb(); }; - newArguments.push(callback); + // Nothing supplied as callback + newArguments.push(function () { cb(); }); } @@ -51,7 +48,8 @@ function Executor () { * @param {Object} task * task.this - Object to use as this * task.fn - Function to execute - * task.arguments - Array of arguments + * task.arguments - Array of arguments, IMPORTANT: only the last argument may be a function (the callback) + * and the last argument cannot be false/undefined/null * @param {Boolean} forceQueuing Optional (defaults to false) force executor to queue task even if it is not ready */ Executor.prototype.push = function (task, forceQueuing) {