WEB开发网
开发学院软件开发Java ExtJs 中使用 TaskRunner 和 DelayedTask 如何传参... 阅读

ExtJs 中使用 TaskRunner 和 DelayedTask 如何传参数到 run() 方法

 2009-09-24 00:00:00 来源:WEB开发网   
核心提示:在 ExtJs 中支持多线程的类有 Ext.util.TaskRunner 和 Ext.util.DelayedTask,TaskRunner 提供了多线程的定时服务,ExtJs 中使用 TaskRunner 和 DelayedTask 如何传参数到 run() 方法,DelayedTask 允许你延时多久在新建线程中

在 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。看代码:

1 2 3  下一页

Tags:ExtJs 使用 TaskRunner

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接