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