您的位置:首页 > Web前端 > JavaScript

ExtJs 学习笔记(2)TaskRunner

2013-10-23 21:48 253 查看
主要两项功能:执行次数的限制、执行时间的限制(即超时)。TaskRunner 旨在利用计时器分时执行方法提供一个相对简易的并行运行机制,其目的不但在于一般的延时执行任务,还可以同时进行多项任务。这样的话,任意个独立的任务都可以在任何时候开始,并彼此独立地运行。那么是否与多线程的概念有些相近呢?其实不尽然——这里必须说明一下,尽管 ExtJS 官方文档提出“提供以多线程的方式执行一个或多个任务的能力”的概念,但并不是真正的代替“线程(thread)”,仅仅是“模拟”。因为我们晓得,浏览器接口也好,JS运行时也好,仍不出“单线程模型”的范围内,所以我们认为充其量只是模拟线程的一种手段。在内部结构中,由数组
tasks[] 保持着任务对象的队列。

能提供多线程的定时服务,该类提供了多线程任务的管理。你可以通过Ext.TaskMgr来创建TaskRunner的一个实例,其次也可以自行创建Ext.util.TaskRunner的实例。该类可保障每一个任务或服务都可以在任何时刻独立的运行,而不会影响其他的任务或服务的运行。

如下一个简单实例:

var task = 
{
	run: function() 
	{
		Ext.fly().update(new Date().format('g:i:s A'));
	},
	interval: 1000 //单位毫秒
}

var runner = new Ext.util.TaskRunner();

runner.start(task);


(1)构造函数

构造一个函数,通过参数指定创建一个定时任务

TaskRunner([interval])

interval:可选参数,当新建立一个定时任务时,可指定interval毫秒作为该线程执行的时间间隔,如果不选该参数默认指定为10毫秒

(2)启动一个线程start()

start(task)

task:

可选参数,如果task不为空,必须具备如下属性:

run:一个函数来指定任务在某个时间执行,执行的作用域必须指明。

interval:指定任务连续执行的时间间隔。

scope:task对象run函数的作用域。

duration:在执行线程前先停止的时间。

repeat:重复执行的次数。

(3)停止一个线程stop()

stop(task)

停止指定的任务线程。

(4)停止所有线程stopAll()

stopAll()

停止所有的任务线程。

应用实例:

var task = {
	run:function(){
		Ext.Msg.alert("提示","线程已经运行!我将每次运行重复5次!但10秒后我将停止!");
	},
	interval:1000,
	repeat:5,
	duration:10000
};

var runner = new Ext.util.TaskRunner();

runner.start(task);

runner.stopAll();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: