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

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

 2009-09-24 00:00:00 来源:WEB开发网   
核心提示: 01.Ext.onReady(function(){02.varrunner=newExt.util.TaskRunner();03.runner.start({//任务被调用的方法04.run:function(){//run方法原型不变,实际可以去遍历这个arguments参数数组05.al

01.Ext.onReady(function(){
02.    var runner = new Ext.util.TaskRunner();
03.    runner.start({      //任务被调用的方法
04.        run: function(){ //run 方法原型不变,实际可以去遍历这个 arguments 参数数组
05.            alert('run() 方法被执行. 传入参数个数:' + arguments.length + ", 分别是:"
06.                + arguments[0] +"," + arguments[1] +"," + arguments[2]);
07.            return false;  //不返回 false,run() 方法会被永无止境的调用
08.        },
09.        args:[100,200,300],
10.        interval: 1000, //一秒执行一次,本例中 run() 只在 1 秒后调用一次
11.        repeat: 2       //重复执行 2 次, 这个参数已不再启作用了
12.    });
13.});

如果不在 run() 方法中返回 false,你会发现会不停的弹出窗口,有了 args 属性时,repeat 根本不管用。原因还得从 TaskMgr 源代码中去发现:

01.if(t.interval <= itime){
02.    var rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);
03.    t.taskRunTime = now;
04.    if(rt === false || t.taskRunCount === t.repeat){
05.        removeTask(t);
06.        return;
07.    }
08.}
09.if(t.duration && t.duration <= (now - t.taskStartTime)){
10.    removeTask(t);
11.}

Tags:ExtJs 使用 TaskRunner

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