Ext.util.TaskRunner

Hierarchy

Ext.Base
Ext.util.TaskRunner

Subclasses

Files

提供以异步方式执行一个或多个任意任务的功能。 通常情况下, 您可以使用单例Ext.TaskManager代替,但如果需要, 您可以创建单独的TaskRunner实例。 任意数量的单独的任务可以在任何时间开始,并且将彼此独立地运行。

Example usage:

 // 启动一个简单的时钟任务,每秒执行一次更新一个div
 var updateClock = function () {
     Ext.fly('clock').update(new Date().format('g:i:s A'));
 }

 var runner = new Ext.util.TaskRunner();
 var task = runner.start({
     run: updateClock,
     interval: 1000
 }

相当于使用任务管理器:

 var task = Ext.TaskManager.start({
     run: updateClock,
     interval: 1000
 });

终止正在运行的任务:

 task.destroy();

如果任务需要随着时间的推移重复启动和停止, 你可以创建一个Task实例。

 var task = runner.newTask({
     run: function () {
         // 调用的代码
     },
     interval: 1000
 });

 task.start();

 // ...

 task.stop();

 // ...

 task.start();

类似于以上所述的可以管理的一个可重用的、 一次性的任务:

 var task = runner.newTask({
     run: function () {
         // 调用的代码运行一次
     },
     repeat: 1
 });

 task.start();

 // ...

 task.start();

请参见start方法如何配置任务对象有关的详细信息。

亦可参见Ext.util.DelayedTask.

Defined By

Config options

Ext.util.TaskRunner
: Number

计时器分辨率。

Defaults to: 10

Defined By

Properties

扩展事件

Defaults to: []

本身 获取当前类的引用,此对象被实例化。不同于 statics, this.self是依赖范围,它意味着要使用动态继承。 ...

本身

获取当前类的引用,此对象被实例化。不同于 statics, this.self是依赖范围,它意味着要使用动态继承。 参见 statics 详细对比

Ext.define('My.Cat', {
    statics: {
        speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
    },

    constructor: function() {
        alert(this.self.speciesName); // 依赖 'this'
    },

    clone: function() {
        return new this.self();
    }
});


Ext.define('My.SnowLeopard', {
    extend: 'My.Cat',
    statics: {
        speciesName: 'Snow Leopard'         // My.SnowLeopard.speciesName = 'Snow Leopard'
    }
});

var cat = new My.Cat();                     // alerts 'Cat' 猫
var snowLeopard = new My.SnowLeopard();     // alerts 'Snow Leopard' 雪豹

var clone = snowLeopard.clone();
alert(Ext.getClassName(clone));             // alerts 'My.SnowLeopard'
Ext.util.TaskRunner
: Objectprivate

当前计时器的id。

Defaults to: null

Methods

Defined By

Instance Methods

Ext.util.TaskRunner
new( [Number/Object interval] ) : Object

Parameters

  • interval : Number/Object (optional)

    以毫秒为单位的TaskRunner实例所支持的最小精度。 或者,一个配置对象,以应用到新的实例。

    Defaults to: 10

Returns

( Object config )private

添加配置

Parameters

Parameters

( Object name, Object member )private

Parameters

( Object xtype )private

添加 Xtype

Parameters

( Array/Arguments ) : Objectdeprecatedprotected
调用原来的方法,这是以前的override重写 Ext.define('My.Cat', { constructor: function() { alert("I'm a cat!"); } }); ...

调用原来的方法,这是以前的override重写

Ext.define('My.Cat', {
    constructor: function() {
        alert("I'm a cat!");
    }
});

My.Cat.override({
    constructor: function() {
        alert("I'm going to be a cat!");

        this.callOverridden();

        alert("Meeeeoooowwww");
    }
});

var kitty = new My.Cat(); // alerts "I'm going to be a cat!"
                          // alerts "I'm a cat!"
                          // alerts "Meeeeoooowwww"

This method has been deprecated since 4.1

版本 使用 callParent 代替.

Parameters

  • : Array/Arguments

    参数的参数,数组或'参数'对象 来自当前方法,例如: this.callOverridden(arguments)

Returns

  • Object

    返回调用重写方法的结果。

( Array/Arguments args ) : Objectprotected

所谓的"parent"方法是指当前的方法。 这是以前的方法派生或重写(参见 Ext.define)。

 Ext.define('My.Base', {
     constructor: function (x) {
         this.x = x;
     },

     statics: {
         method: function (x) {
             return x;
         }
     }
 });

 Ext.define('My.Derived', {
     extend: 'My.Base',

     constructor: function () {
         this.callParent([21]);
     }
 });

 var obj = new My.Derived();

 alert(obj.x);  // alerts 21

这可以用来重写如下:

 Ext.define('My.DerivedOverride', {
     override: 'My.Derived',

     constructor: function (x) {
         this.callParent([x*2]); // 调用原来的My.Derived构造
     }
 });

 var obj = new My.Derived();

 alert(obj.x);  // 现在提示 42

This also works with static methods.

 Ext.define('My.Derived2', {
     extend: 'My.Base',

     statics: {
         method: function (x) {
             return this.callParent([x*2]); // 调用 My.Base.method
         }
     }
 });

 alert(My.Base.method(10);     // alerts 10
 alert(My.Derived2.method(10); // alerts 20

然后,它也可以重写静态方法。

 Ext.define('My.Derived2Override', {
     override: 'My.Derived2',

     statics: {
         method: function (x) {
             return this.callParent([x*2]); // 调用 My.Derived2.method
         }
     }
 });

 alert(My.Derived2.method(10); // 现在提示 40

Parameters

  • args : Array/Arguments

    这个参数, 通过当前方法得到数组或者 arguments 对象, 例如: this.callParent(arguments)

Returns

  • Object

    返回调用父类的方法的结果。

Ext.util.TaskRunner
( )

销毁此实例,停止当前正在运行的所有任务。

( Object config )private

拓展

Parameters

( Object name )private

得到配置项

Parameters

得到初始化配置项

Parameters

( Object config )private

根据名称判断配置项是否存在

Parameters

( Object config ) : Objectprotected
这个类的初始化配置。典型例子: Ext.define('My.awesome.Class', { // 这是默认配置 config: { name: 'Awesome', isAwes...

这个类的初始化配置。典型例子:

Ext.define('My.awesome.Class', {
    // 这是默认配置
    config: {
        name: 'Awesome',
        isAwesome: true
    },

    constructor: function(config) {
        this.initConfig(config);
    }
});

var awesome = new My.awesome.Class({
    name: 'Super Awesome'
});

alert(awesome.getName()); // 'Super Awesome' 超级棒

Parameters

Returns

  • Object

    mixins 混入原型 键-值对

( Object name, Object mixinClass )private

内部使用混入预处理器(mixins pre-processor)

Parameters

Ext.util.TaskRunner
( Object config )

创建一个Task 实例。 这些实例都可以轻松地启动和停止。

Parameters

  • config : Object

    配置对象。有关受支持的属性的详细信息, 请参见start.

( Object names, Object callback, Object scope )private

更新配置项

Parameters

( Object fn, Object scope )private

扩展事件

Parameters

( Object config, Object applyIfNotSet )private

设置配置项

Parameters

Ext.util.TaskRunner
( Object task ) : Object

启动一个新的任务。

在每个调用之前,Ext注入task对象上的 taskRunCount 属性以便在计算基础上的重复计数可以执行。

返回的任务将包含一个destroy的方法,可以用来摧毁任务并进一步取消回调。 这是相当于stop方法。

Parameters

  • task : Object

    支持以下属性的配置对象:

    • run : Function

      每当任务执行时调用该函数。 该函数将被调用在每个时间间隔并传递的 'args' 参数(如果已指定), 和当前的调用计数(如果未计数)。

      如果需要某个特定的范围 (this引用), 一定要指定它使用 scope参数。

      Parameters

        Returns

        • Boolean

          从该函数返回false以终止任务。

      • onError : Function

        在task.run中遇到未处理错误时执行的函数。

      • interval : Number

        以毫秒为单位的任务应该调用的频率。

      • args : Object[]

        要传递给run指定的函数的参数数组。 如果未指定,则通过当前调用计数。

      • scope : Object

        在其中执行的run函数的作用域(this引用)。 默认值为任务配置对象。

      • duration : Number

        以毫秒为单位, 要在自动停止之前调用该任务的时间长度(默认为无限期)。

      • repeat : Number

        在自动停止之前调用任务的次数 (默认为无限期)。

    Returns

    获取从该对象被实例化的类的引用。 请注意不同于 self, this.statics()是独立的作用域,无论this是否运行,总是返回其中的调用类。

    Ext.define('My.Cat', {
        statics: {
            totalCreated: 0,
            speciesName: 'Cat' // My.Cat.speciesName = 'Cat'
        },
    
        constructor: function() {
            var statics = this.statics();
    
            alert(statics.speciesName);     // 总是等于'Cat',无论'this'是什么,
                                            // 相当于:My.Cat.speciesName
    
            alert(this.self.speciesName);   // 依赖 'this'
    
            statics.totalCreated++;
        },
    
        clone: function() {
            var cloned = new this.self;                      // 依赖 'this'
    
            cloned.groupName = this.statics().speciesName;   // 相当于: My.Cat.speciesName
    
            return cloned;
        }
    });
    
    
    Ext.define('My.SnowLeopard', {
        extend: 'My.Cat',
    
        statics: {
            speciesName: 'Snow Leopard'     // My.SnowLeopard.speciesName = 'Snow Leopard'
        },
    
        constructor: function() {
            this.callParent();
        }
    });
    
    var cat = new My.Cat();                 // alerts 'Cat', 然后提示 'Cat'
    
    var snowLeopard = new My.SnowLeopard(); // alerts 'Cat', 然后提示 'Snow Leopard'
    
    var clone = snowLeopard.clone();
    alert(Ext.getClassName(clone));         // alerts 'My.SnowLeopard'
    alert(clone.groupName);                 // alerts 'Cat'
    
    alert(My.Cat.totalCreated);             // alerts 3
    

    Returns

    Ext.util.TaskRunner
    ( Object task ) : Object

    停止现有的正在运行的任务。

    Parameters

    • task : Object

      要停止的任务

    Returns

    Ext.util.TaskRunner
    ( )

    停止当前正在运行的所有任务。

    配置扩展

    Defined By

    Static Methods

    ( Object members )static

    方法/属性添加到这个类的原型。

    Ext.define('My.awesome.Cat', {
        constructor: function() {
            ...
        }
    });
    
     My.awesome.Cat.implement({
         meow: function() {
            alert('Meowww...');
         }
     });
    
     var kitty = new My.awesome.Cat;
     kitty.meow();
    

    Parameters

    添加/重写这个类的静态属性。

    Ext.define('My.cool.Class', {
        ...
    });
    
    My.cool.Class.addStatics({
        someProperty: 'someValue',      // My.cool.Class.someProperty = 'someValue'
        method1: function() { ... },    // My.cool.Class.method1 = function() { ... };
        method2: function() { ... }     // My.cool.Class.method2 = function() { ... };
    });
    

    Parameters

    Returns

    ( Ext.Base fromClass, Array/String members ) : Ext.Baseprivatestatic
    这个类的原型借用另一个类的成员 Ext.define('Bank', { money: '$$$', printMoney: function() { alert('$$$$$$$'); } ...

    这个类的原型借用另一个类的成员

    Ext.define('Bank', {
        money: '$$$',
        printMoney: function() {
            alert('$$$$$$$');
        }
    });
    
    Ext.define('Thief', {
        ...
    });
    
    Thief.borrow(Bank, ['money', 'printMoney']);
    
    var steve = new Thief();
    
    alert(steve.money); // alerts '$$$'
    steve.printMoney(); // alerts '$$$$$$$'
    

    Parameters

    Returns

    创建这个类的新实例。

    Ext.define('My.cool.Class', {
        ...
    });
    
    My.cool.Class.create({
        someConfig: true
    });
    

    所有参数传递至类的构造。

    Returns

    创建现有的原型方法的别名。例如: Ext.define('My.cool.Class', { method1: function() { ... ...

    创建现有的原型方法的别名。例如:

    Ext.define('My.cool.Class', {
        method1: function() { ... },
        method2: function() { ... }
    });
    
    var test = new My.cool.Class();
    
    My.cool.Class.createAlias({
        method3: 'method1',
        method4: 'method2'
    });
    
    test.method3(); // test.method1()
    
    My.cool.Class.createAlias('method5', 'method3');
    
    test.method5(); // test.method3() -> test.method1()
    

    Parameters

    以字符串格式,获取当前类的名称。

    Ext.define('My.cool.Class', {
        constructor: function() {
            alert(this.self.getName()); // alerts 'My.cool.Class'
        }
    });
    
    My.cool.Class.getName(); // 'My.cool.Class'
    

    Returns

    ( Object members ) : Ext.Basedeprecatedstatic

    重写这个类的成员。通过callParent重写的方法可以调用。

    Ext.define('My.Cat', {
        constructor: function() {
            alert("I'm a cat!");
        }
    });
    
    My.Cat.override({
        constructor: function() {
            alert("I'm going to be a cat!");
    
            this.callParent(arguments);
    
            alert("Meeeeoooowwww");
        }
    });
    
    var kitty = new My.Cat(); // alerts "I'm going to be a cat!我要成为一只猫!"
                              // alerts "I'm a cat!我是一只猫!"
                              // alerts "Meeeeoooowwww"
    

    在4.1版本, 直接利用这种方法已经过时了。 使用 Ext.define 代替:

    Ext.define('My.CatOverride', {
        override: 'My.Cat',
        constructor: function() {
            alert("I'm going to be a cat!");
    
            this.callParent(arguments);
    
            alert("Meeeeoooowwww");
        }
    });
    

    以上完成了相同的结果,但可以由Ext.Loader重写, 其目标类和生成过程中,可以决定是否需要根据目标类所需的状态覆盖管理(My.Cat)。

    This method has been deprecated since 4.1.0

    使用 Ext.define 代替

    Parameters

    • members : Object

      添加到这个类的属性。 这应当被指定为一个对象包含一个或多个属性的文字。

    Returns