`
zhouyrt
  • 浏览: 1162168 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读Ext之七(多任务定时管理)

EXT 
阅读更多

Ext.util.TaskRunner 用来管理多任务定时管理。每一个任务是一个JS对象,具有以下属性

run, interval, args, scope, duration, repeat。

示例如下:

var task = {
	run : function(){...},
	interval : 1000,
	args : [],
	scope : obj,
	duration : 5000,
	repeat : 3
}

 

run和interval是必选,其它为可选。

 

鸟瞰类如下:

Ext.util.TaskRunner = function(interval){
    interval = interval || 10;
    var tasks = [], 
    	removeQueue = [],
    	id = 0,
    	running = false,

		...
	    
    	// private
    	runTasks = function(){
			...
	    };

    this.start = function(task){
    	...
    };

    this.stop = function(task){
		...
    };

    this.stopAll = function(){
		...
    };
};
Ext.TaskMgr = new Ext.util.TaskRunner();

 

 

Ext.util.TaskRunner 为一个类,需要new后使用。定义方式同Ext.util.DelayedTask ,采用构造函数方式

向外提供了三个接口方法,start,stop,stopAll。另外一堆私有函数协助构造整个类,其中最重要的为runTasks,this.start中调用其。

最后一句可以看到给顶级的命名空间Ext上挂了个TaskMgr,Ext库自身使用使用 Ext.TaskMgr 进行多任务定时管理。

 

下面先列出该类的使用

示例1

// 创建一个任务管理对象
var taskMgr = new Ext.util.TaskRunner();
// 创建一个任务
var task1 = {
	run : function(){
		console.log('test');
	},
	interval : 1000
};	
// 开始执行任务task1
taskMgr.start(task1);

 从控制台可以看到每隔一秒输出了一次test。run为function类型,即表示一个任务。interval为Number类型,表示任务执行间隔的时间。

示例2

// 创建一个任务管理对象
var taskMgr = new Ext.util.TaskRunner();
// 创建一个任务
var task1 = {
	run : function(){
		console.log(arguments);
		console.log(this);
	},
	interval : 1000,
	args : [1,2],
	scope : window
};	
// 开始执行任务task1
taskMgr.start(task1);

 从控制台可以看到每隔一秒输出了"[1,2]","window"。即args(Array类型)为run调用时的参数,scope(Object类型)为run执行时的上下文。

示例3

// 创建一个任务管理对象
var taskMgr = new Ext.util.TaskRunner();
// 创建一个任务
var task1 = {
	run : function(){
		console.log('test');
	},
	interval : 1000,
	duration : 5000
};	
// 开始执行任务task1
taskMgr.start(task1);

从控制台可以看到仍然是每隔一秒输出一次"test",但5秒后就停止了。即duration(整数,单位为毫秒)为任务run持续执行的时间,超过该时间不再执行。注意,duration设置为4900也会执行5次。

示例4

// 创建一个任务管理对象
var taskMgr = new Ext.util.TaskRunner();
// 创建一个任务
var task1 = {
	run : function(){
		console.log('test');
	},
	interval : 1000,
	repeat : 3
};	
// 开始执行任务task1
taskMgr.start(task1); 

从控制台可以看到仍然是每隔一秒输出一次"test",但输出3次后就停止了。即repeat(Number类型)为任务run执行的次数,超过该次数不再执行。注意,repeat不能为小数(如3.3),否则将会一直执行而不是执行3次。


以上示例了解到了任务对象的各个属性意义。但仅仅是一个任务,

// 创建一个任务管理对象
var taskMgr = new Ext.util.TaskRunner();
// 创建一个任务
var task1 = {
	run : function(){
		console.log('test1');
	},
	interval : 1000,
};
var task2 = {
	run : function(){
		console.log('test2');
	},
	interval : 3000,
};	
// 开始执行任务
taskMgr.start(task1);
taskMgr.start(task2);

从控制台可以看到仍然第一秒输出"test1","test2",第二秒时只输出test1,第三秒又输出"test1","test2"。即有两个任务在执行。


明白了start方法,stop和stopAll方法就很好理解了。无须复述。

 

2
0
分享到:
评论

相关推荐

    extapi

    最后,"EXT核心API详解(七)-Ext.KeyNav KeyMap JSON Format DelayedTask TaskRunner TextMetrics XTemplate.txt"涉及键盘导航(KeyNav)、键映射(KeyMap)、JSON格式化、延迟任务(DelayedTask)、任务调度器...

    整理的Ext API详解

    "EXT核心API详解(七)-Ext.KeyNav KeyMap JSON Format DelayedTask TaskRunner TextMetrics XTemplate.txt"涵盖了键盘导航(KeyNav)、键映射(KeyMap)等高级交互功能,JSON格式处理,延迟任务(DelayedTask)和任务...

    Ext.window从右下角弹出/隐藏

    为了实现窗口的动态弹出和隐藏,使用了`Ext.TaskMgr`进行定时任务管理。其中,`upTask`用于控制窗口向上移动,而`downTask`则用于控制窗口向下移动。这两个任务的执行间隔均为`moveSpeed`,单位为毫秒。 ##### 4. *...

    EXT_C.rar_ EXT_C_Ext_c_外部中断

    通过理解中断服务程序的工作原理和编写中断服务函数,开发者可以灵活地设计出各种实时性要求高的应用,例如按钮检测、脉冲计数、定时任务等。在实际应用中,需要注意中断的优先级设置、中断嵌套以及避免中断处理过程...

    extjs弹出框 n秒后消失

    为了使弹出框在n秒后自动关闭,我们需要创建一个延时任务,并在任务中调用`Ext.MessageBox.hide`方法。延时任务的创建和启动可以通过`new Ext.util.DelayedTask(function() { ... })`和`delay`方法实现。以下是一个...

    linux系统管理与服务

    Linux的任务管理包括进程管理和定时任务。ps, top, htop等工具用于查看和管理进程,crontab用于设置定时任务。在故障排查方面,要学会利用日志(如/var/log/下的各类日志文件),使用grep, tail, less等工具定位问题...

    ext4.2 日历日期控件,可以选择时分秒

    这个日历控件不仅提供标准的日期选择功能,还扩展到了小时、分钟和秒钟的精细化选择,使得用户能够精确设定时间,这对于需要精确时间输入的场景(如会议预约、定时任务等)非常有用。 该控件的核心功能可能包括以下...

    ext-gpio.rar_BF538

    4. **多任务兼容**:在多任务环境中,确保对GPIO的访问是线程安全的,避免数据竞争和冲突。 5. **定时操作**:可能包含定时器功能,允许在特定时间间隔后改变GPIO状态,或者在特定事件发生时触发动作。 在"ext-gpio...

    extjs帮助文档

    - **概述**:Ext.util.TaskRunner类用于管理和执行定时任务。 - **常用方法**: - `Ext.util.TaskRunner.run(task)`:运行任务。 - `Ext.util.TaskRunner.stop(task)`:停止任务。 #### 二十二、Ext.util....

    AUTOSAR_TPS_TimingExtensions.pdf

    1. **支持AUTOSAR软件集群和经典平台的灵活性**:这一改变意味着系统能够更好地管理和调度多个软件组件,以适应不同场景的需求,提高整体系统的响应速度和效率。 2. **使用“shall”替换“must”**:根据TPS_STDT_...

    Linux管理员手册.rar

    使用sed、awk、grep等工具处理文本数据,cron定时任务执行计划任务。 十、故障排查 日志分析、性能监控数据、strace跟踪系统调用、gdb调试程序,都是排查问题的常用手段。了解核心转储(core dump)和系统调用跟踪...

    Linux常用命令 LINUX常用命令和系统管理

    - `cron`: 定时任务管理,通过crontab文件设定定时任务。 以上只是Linux命令和系统管理的基础,实际操作中还有更多高级功能和技巧。学习和熟练掌握这些命令,将使你在处理Linux系统时更加得心应手。不断实践和探索...

    LINUX系统管理白皮书

    此外,还会讲解cron定时任务的设定,实现定期自动化任务执行。 七、软件包管理与编译安装 在LINUX中,有各种软件包管理系统,如apt(Debian系)、yum(RPM系)等,白皮书将指导如何使用这些工具进行软件安装、升级...

    linux 新手管理员指南(CHM)

    它涵盖了Linux系统的基本概念、安装、用户管理、文件系统、网络配置、权限管理、软件安装与更新、进程管理以及系统监控等多个核心主题。这个CHM(Compiled HTML Help)文件是一个压缩的电子书格式,通常包含了丰富的...

    extjs实例说明详解

    JSON Format用于处理JSON数据,DelayedTask和TaskRunner用于定时任务,TextMetrics用于计算文本的尺寸,XTemplate则是一种强大的模板引擎,方便数据和视图的绑定。 总的来说,这个资源涵盖了ExtJS的大部分基础API,...

    定时备份文件

    标题“定时备份文件”涉及到的是一个重要的IT管理实践,它主要关注如何定期自动备份关键数据,以防止数据丢失或系统故障。在这个过程中,通常会使用特定的工具和技术来实现自动化,确保数据的安全性和可恢复性。 ...

    Linux系统管理白皮书.rar

    Linux的任务调度包括cron定时任务和at一次性任务,通过编辑`/etc/crontab`配置定时任务。 六、软件包管理与编译安装 Linux发行版通常提供包管理器,如Debian系的`apt`,RedHat系的`yum`或`dnf`,用于安装、升级、...

    timer_ext_int.rar_site:www.pudn.com

    中断优先级是另一个重要的考虑因素,它决定了微控制器如何处理同时发生的多个中断。 在"timer_ext_int.asm"这个文件中,我们可以预期看到用汇编语言编写的相关代码。汇编语言是低级编程语言,直接对应于机器指令,...

    Linux管理员指南

    通过编写shell脚本,可以实现批量任务执行、定时任务调度等。 10. **故障排查**:学习如何使用`dmesg`查看内核消息,`strace`跟踪系统调用,`gdb`调试程序,以及`syslog`日志分析,能帮助定位和解决问题。 这个...

    Linux系统管理员手册

    作为一位Linux系统管理员,你需要了解操作系统的基本架构、安装与配置、用户与权限管理、软件包管理、网络服务配置、存储管理以及故障排查等多个方面。下面我们将详细探讨这些关键知识点。 1. **Linux操作系统基础*...

Global site tag (gtag.js) - Google Analytics