閱讀112 返回首頁    go 阿裏雲 go 技術社區[雲棲]


ExtJs 學習筆記(2)TaskRunner

主要兩項功能:執行次數的限製、執行時間的限製(即超時)。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();


最後更新:2017-04-03 14:53:52

  上一篇:go Mybatis中javaType和jdbcType對應和CRUD例子
  下一篇:go jdk-6u45-linux-x64.bin