diff --git a/lib/task.js b/lib/task.js index 8246097..855fda1 100644 --- a/lib/task.js +++ b/lib/task.js @@ -55,15 +55,11 @@ var TaskQueue = function() { try { if (this.queue.length > 0) { - task = this.queue[0]; - this.queue = this.queue.slice(1); - - if (task.when > 0) { - var delta = task.when - now.getTime(); - if (delta > 0) { - var _task = task; - this.put(_task); - task = null; + for (var i = 0; i < this.queue.length; i++) { + var delta = this.queue[i].when - now.getTime(); + if (delta <= 0) { + task = this.queue.splice(i, 1)[0]; + break; } } } @@ -81,14 +77,14 @@ var TaskQueue = function() { if (task != null) { try { - task.params.unshift(task); - result = task.f.apply(null, task.params); + result = task.f.apply(null, [task].concat(task.params)); if (task.nextTask != null) { this.put(task.nextTask); } } catch (e) { console.error("Task exception: " + e.message); console.error("task.f: " + typeof(task.f)); + //WScript.echo(task.f); console.error("task.params: " + typeof(task.params)); } }