4 * Copyright(c) 2006-2007, Ext JS, LLC.
6 * Originally Released Under LGPL - original licence link has changed is not relivant.
9 * <script type="text/javascript">
12 * @class Roo.util.TaskRunner
13 * Manage background tasks - not sure why this is better that setInterval?
18 Roo.util.TaskRunner = function(interval){
19 interval = interval || 10;
20 var tasks = [], removeQueue = [];
24 var stopThread = function(){
30 var startThread = function(){
33 id = setInterval(runTasks, interval);
37 var removeTask = function(task){
38 removeQueue.push(task);
44 var runTasks = function(){
45 if(removeQueue.length > 0){
46 for(var i = 0, len = removeQueue.length; i < len; i++){
47 tasks.remove(removeQueue[i]);
55 var now = new Date().getTime();
56 for(var i = 0, len = tasks.length; i < len; ++i){
58 var itime = now - t.taskRunTime;
59 if(t.interval <= itime){
60 var rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);
62 if(rt === false || t.taskRunCount === t.repeat){
67 if(t.duration && t.duration <= (now - t.taskStartTime)){
75 * @param {Object} task
77 * Task property : interval = how frequent to run.
78 * Task object should implement
80 * Task object may implement
83 this.start = function(task){
85 task.taskStartTime = new Date().getTime();
87 task.taskRunCount = 0;
93 * @param {Object} task
95 this.stop = function(task){
102 this.stopAll = function(){
104 for(var i = 0, len = tasks.length; i < len; i++){
114 Roo.TaskMgr = new Roo.util.TaskRunner();