为什么 一定要用extjs的定时器,你也可以用setInterval啊。
解决方案 »
- 怎么通过JS给input中的value赋值啊.
- 请教一个Jquery的show、hide问题
- 一个类似于滑动门的东西,但是比滑动门复杂很多的说,求助...
- JavaScript怎么把euc-kr编码的韩文转化为UTF-8编码
- 用超级链接提交表单,将值传到另一个页面
- 如何在TOMCAT中设置中文过滤器?
- 我的电脑开机后总是 要点击两次任务管理器
- 关于cookie的问题,麻烦帮我看看代码
- 一个showModalDialog返回的字串returnValue,其父窗口如何获得这个内容?
- 如何写链接: 请大侠指点?? ------在线等待!
- 关于JS获取URL后携带参数的问题
- 自己写的一段代码,间歇性提示有错误
* Ext JS Library 3.3.1
* Copyright(c) 2006-2010 Sencha Inc.
* [email protected]
* http://www.sencha.com/license
*/
/**
* @class Ext.util.TaskRunner
* Provides the ability to execute one or more arbitrary tasks in a multithreaded
* manner. Generally, you can use the singleton {@link Ext.TaskMgr} instead, but
* if needed, you can create separate instances of TaskRunner. Any number of
* separate tasks can be started at any time and will run independently of each
* other. Example usage:
*
// Start a simple clock task that updates a div once per second
var updateClock = function(){
Ext.fly('clock').update(new Date().format('g:i:s A'));
}
var task = {
run: updateClock,
interval: 1000 //1 second
}
var runner = new Ext.util.TaskRunner();
runner.start(task);// equivalent using TaskMgr
Ext.TaskMgr.start({
run: updateClock,
interval: 1000
}); *
* See the {@link #start} method for details about how to configure a task object. * Also see {@link Ext.util.DelayedTask}.
*
* @constructor
* @param {Number} interval (optional) The minimum precision in milliseconds supported by this TaskRunner instance
* (defaults to 10)
*/
Ext.util.TaskRunner = function(interval){
interval = interval || 10;
var tasks = [],
removeQueue = [],
id = 0,
running = false, // private
stopThread = function(){
running = false;
clearInterval(id);
id = 0;
}, // private
startThread = function(){
if(!running){
running = true;
id = setInterval(runTasks, interval);
}
}, // private
removeTask = function(t){
removeQueue.push(t);
if(t.onStop){
t.onStop.apply(t.scope || t);
}
},
// private
runTasks = function(){
var rqLen = removeQueue.length,
now = new Date().getTime();
if(rqLen > 0){
for(var i = 0; i < rqLen; i++){
tasks.remove(removeQueue[i]);
}
removeQueue = [];
if(tasks.length < 1){
stopThread();
return;
}
}
for(var i = 0, t, itime, rt, len = tasks.length; i < len; ++i){
t = tasks[i];
itime = now - t.taskRunTime;
if(t.interval <= itime){
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);
}
}
};
/**
* Starts a new task.
* @method start
* @param {Object} task A config object that supports the following properties:
*
run : Function The function to execute each time the task is invoked. The
* function will be called at each interval and passed the args argument if specified, and the
* current invocation count if not. * If a particular scope (this reference) is required, be sure to specify it using the scope argument. * Return false from this function to terminate the task. *
interval : Number
The frequency in milliseconds with which the task
* should be invoked. *
args : Array
(optional) An array of arguments to be passed to the function
* specified by run. If not specified, the current invocation count is passed. *
scope : Object
(optional) The scope (this reference) in which to execute the
* run function. Defaults to the task config object. *
duration : Number
(optional) The length of time in milliseconds to invoke
* the task before stopping automatically (defaults to indefinite). *
repeat : Number
(optional) The number of times to invoke the task before
* stopping automatically (defaults to indefinite). *
* Before each invocation, Ext injects the property taskRunCount into the task object so
* that calculations based on the repeat count can be performed. * @return {Object} The task
*/
this.start = function(task){
tasks.push(task);
task.taskStartTime = new Date().getTime();
task.taskRunTime = 0;
task.taskRunCount = 0;
startThread();
return task;
};
/**
* Stops an existing running task.
* @method stop
* @param {Object} task The task to stop
* @return {Object} The task
*/
this.stop = function(task){
removeTask(task);
return task;
};
/**
* Stops all tasks that are currently running.
* @method stopAll
*/
this.stopAll = function(){
stopThread();
for(var i = 0, len = tasks.length; i < len; i++){
if(tasks[i].onStop){
tasks[i].onStop();
}
}
tasks = [];
removeQueue = [];
};
};/**
* @class Ext.TaskMgr
* @extends Ext.util.TaskRunner
* A static {@link Ext.util.TaskRunner} instance that can be used to start and stop arbitrary tasks. See
* {@link Ext.util.TaskRunner} for supported methods and task config properties.
*
// Start a simple clock task that updates a div once per second
var task = {
run: function(){
Ext.fly('clock').update(new Date().format('g:i:s A'));
},
interval: 1000 //1 second
}
Ext.TaskMgr.start(task);
* See the {@link #start} method for details about how to configure a task object. * @singleton
*/
Ext.TaskMgr = new Ext.util.TaskRunner();
Ext.util.TaskRunner 该类默认情况下是对新开的任务2毫秒执行第一次,之后就是你指定的间隔执行的,
至于为什么会这样请自己上面的代码