ExtJs 中使用 TaskRunner 和 DelayedTask 如何传参数到 run() 方法
2009-09-24 00:00:00 来源:WEB开发网在 ExtJs 中支持多线程的类有 Ext.util.TaskRunner 和 Ext.util.DelayedTask。TaskRunner 提供了多线程的定时服务,DelayedTask 允许你延时多久在新建线程中执行一个任务。Ext.TaskMgr 是一个 TaskRunner 实例,在 TaskMgr.js 源码中可以看到最后一行是:
Ext.TaskMgr = new Ext.util.TaskRunner();
实质上不管是 TaskRunner 还是 DelayedTask,它们都是通过 setInterval() 来执行任务的,TaskRunner 能多次重复的执行一个方法,而 DelayedTask 是延时执行完一次任务后就会调用 clearInterval() 来保证只执行一次。所以这里所说如何向任务的 run() 方法传递参数,本质上就是向 setInterval() 中方法传递参数。
我们到 http://extjs.com/deploy/dev/docs/output/Ext.util.TaskRunner.html 看 TaskRunner 的 API,start(Object task) 中 task 参数是一个配置对象,这里关注它的两个属性:
run : Function 定时执行的方法
args : Array 传递给上面 run 方法的参数
来看一个基本使用方法,下面是不带 args 属性参数的使用:
01.Ext.onReady(function(){
02. var runner = new Ext.util.TaskRunner();
03. runner.start({ //任务被调用的方法
04. run: function(){
05. alert('run() 方法被执行.')
06. },
07. interval: 1000, //一秒执行一次
08. repeat: 5 //重复执行 5 次
09. });
10.});
上面没有向 run() 方法提供参数,那么应该如何向 run() 传入参数,run() 方法此时的原型是怎么样,又该如何获得传入的参数?办法是:js 函数的固有属性 arguments。看代码:
Tags:ExtJs 使用 TaskRunner
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接