taskmgr.js

来自「php绿色服务器,让大家试用greenamp」· JavaScript 代码 · 共 94 行

JS
94
字号
/*
 * Ext JS Library 1.0.1
 * Copyright(c) 2006-2007, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://www.extjs.com/license
 */

Ext.util.TaskRunner = function(interval){    interval = interval || 10;    var tasks = [], removeQueue = [];    var id = 0;    var running = false;    var stopThread = function(){        running = false;        clearInterval(id);        id = 0;    };    var startThread = function(){        if(!running){            running = true;            id = setInterval(runTasks, interval);        }    };    var removeTask = function(task){        removeQueue.push(task);        if(task.onStop){            task.onStop();        }    };    var runTasks = function(){        if(removeQueue.length > 0){            for(var i = 0, len = removeQueue.length; i < len; i++){                tasks.remove(removeQueue[i]);            }            removeQueue = [];            if(tasks.length < 1){                stopThread();                return;            }        }        var now = new Date().getTime();        for(var i = 0, len = tasks.length; i < len; ++i){            var t = tasks[i];            var itime = now - t.taskRunTime;            if(t.interval <= itime){                var rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);                t.taskRunTime = now;                if(rt === false || t.taskRunCount === t.repeat){                    removeTask(t);                    return;                }            }            if(t.duration && t.duration <= (now - t.taskStartTime)){                removeTask(t);            }        }    };    /**     * Queues a new task.     * @param {Object} task     */    this.start = function(task){        tasks.push(task);        task.taskStartTime = new Date().getTime();        task.taskRunTime = 0;        task.taskRunCount = 0;        startThread();        return task;    };    this.stop = function(task){        removeTask(task);        return task;    };    this.stopAll = function(){        stopThread();        for(var i = 0, len = tasks.length; i < len; i++){            if(tasks[i].onStop){                tasks[i].onStop();            }        }        tasks = [];        removeQueue = [];    };};Ext.TaskMgr = new Ext.util.TaskRunner();

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?