mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-09 13:16:05 +00:00
Update task.js
This commit is contained in:
parent
7263b3a517
commit
a9b5865e07
57
lib/task.js
57
lib/task.js
|
@ -5,25 +5,34 @@
|
||||||
/* // example:
|
/* // example:
|
||||||
* // var TASK = require("lib/task");
|
* // var TASK = require("lib/task");
|
||||||
* // var taskQueue = TASK.createTaskQueue();
|
* // var taskQueue = TASK.createTaskQueue();
|
||||||
* // TASK.putTask(queue, TASK.createTask(function() { console.log(a + b + c); sleep(100); }, [1, 2, 3]))
|
* // TASK.putTask(queue, TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(100); }, [1, 2, 3]))
|
||||||
* // .then(TASK.createTask(function(a, b, c) { console.log(a + b + c); sleep(200); }, [4, 5, 6]))
|
* // .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(200); }, [4, 5, 6]))
|
||||||
* // .then(TASK.createTask(function(a, b, c) { console.log(a + b + c); sleep(300); }, [7, 8, 9]))
|
* // .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(300); }, [7, 8, 9]))
|
||||||
* // ;
|
* // ;
|
||||||
* // TASK.putTask(queue, TASK.createTask(function() { console.log(a + b + c); sleep(100); }, [3, 2, 1])
|
* // TASK.putTask(queue, TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(100); }, [3, 2, 1])
|
||||||
* // .then(TASK.createTask(function(a, b, c) { console.log(a + b + c); sleep(200); }, [6, 5, 4]))
|
* // .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(200); }, [6, 5, 4]))
|
||||||
* // .then(TASK.createTask(function(a, b, c) { TASK.stop(); console.log(a + b + c); sleep(300); }, [9, 8, 7]))
|
* // .then(TASK.createTask(function(task, a, b, c) { TASK.stop(); console.log(a + b + c); sleep(300); }, [9, 8, 7]))
|
||||||
* // ;
|
* // ;
|
||||||
* // taskQueue.run();
|
* // taskQueue.run();
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Task = function(f, params, when) {
|
var Task = function(f, params) {
|
||||||
this.f = f;
|
this.f = f;
|
||||||
this.params = params;
|
this.params = params;
|
||||||
this.nextTask = null;
|
this.nextTask = null;
|
||||||
this.when = (typeof(when) === "number" ? when : 0);
|
this.when = 0;
|
||||||
this.setNextTask = function(task) {
|
this.setNextTask = function(task) {
|
||||||
this.nextTask = task;
|
this.nextTask = task;
|
||||||
};
|
};
|
||||||
|
this.setWhen = function(when) {
|
||||||
|
this.when = when;
|
||||||
|
};
|
||||||
|
this.clone = function() {
|
||||||
|
var task = new Task(this.f, this.params);
|
||||||
|
task.setNextTask(this.nextTask);
|
||||||
|
task.setWhen(this.when);
|
||||||
|
return task;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
var TaskQueue = function() {
|
var TaskQueue = function() {
|
||||||
|
@ -42,25 +51,21 @@ var TaskQueue = function() {
|
||||||
};
|
};
|
||||||
this.get = function() {
|
this.get = function() {
|
||||||
var task = null;
|
var task = null;
|
||||||
//var now = new Date().getTime();
|
var now = new Date();
|
||||||
//var delta = now;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (this.queue.length > 0) {
|
if (this.queue.length > 0) {
|
||||||
/*
|
|
||||||
var k = 0;
|
|
||||||
for (var i = 0; i < this.queue.length; i++) {
|
|
||||||
var _delta = now - this.queue[i].when;
|
|
||||||
if (delta > _delta) {
|
|
||||||
k = i;
|
|
||||||
delta = _delta;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
task = this.queue[k];
|
|
||||||
this.queue = this.queue.splice(k, 1);
|
|
||||||
*/
|
|
||||||
task = this.queue[0];
|
task = this.queue[0];
|
||||||
this.queue = this.queue.slice(1);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.error("TaskQueue.get: " + e.message);
|
console.error("TaskQueue.get: " + e.message);
|
||||||
|
@ -76,16 +81,16 @@ var TaskQueue = function() {
|
||||||
|
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
try {
|
try {
|
||||||
|
task.params.unshift(task);
|
||||||
result = task.f.apply(null, task.params);
|
result = task.f.apply(null, task.params);
|
||||||
|
if (task.nextTask != null) {
|
||||||
|
this.put(task.nextTask);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Task exception: " + e.message);
|
console.error("Task exception: " + e.message);
|
||||||
console.error("task.f: " + typeof(task.f));
|
console.error("task.f: " + typeof(task.f));
|
||||||
console.error("task.params: " + typeof(task.params));
|
console.error("task.params: " + typeof(task.params));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.nextTask != null) {
|
|
||||||
this.put(task.nextTask);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.error("TaskQueue.next: " + e.message);
|
console.error("TaskQueue.next: " + e.message);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user