「jquery.timers」jquery定時器

分享至
有時settimout跟setinterval會發生越來越快問題,或是設定多組settimout跟setinterva,時間間隔會錯亂。我推薦使用jquery.timers,定時器能正常的每秒執行一次。
/*************************************************************
 *   everyTime(時間間隔, [計時器名稱], 函式名稱, [次數限制], [等待函式程序完成])
 *************************************************************/
//每1秒執行函式test()
function test(){
   //do something...
}
$('body').everyTime('1s',test);

//每1秒執行
$('body').everyTime('1s',function(){
 //do something...
});

//每1秒執行,並命名計時器名稱為A
$('body').everyTime('1s','A',function(){
 //do something...
});

//每20秒執行,最多5次,並命名計時器名稱為B
$('body').everyTime('2das','B',function(){
 //do something...
},5);

//每20秒執行,無限次,並命名計時器名稱為C
//若時間間隔抵到,但函式程序仍未完成則需等待執行函式完成後再繼續計時
$('body').everyTime('2das','C',function(){
    //執行一個會超過20秒以上的程式
},0,true);

/***********************************************************
 *   oneTime(時間間隔, [計時器名稱], 呼叫的函式)
 ***********************************************************/
//倒數10秒後執行
$('body').oneTime('1das',function(){
 //do something...
});

//倒數100秒後執行,並命名計時器名稱為D
$('body').oneTime('1hs','D',function(){
 //do something...
});

/************************************************************
 *  stopTime ([計時器名稱], [函式名稱])
 ************************************************************/
//停止所有的在$('body')上計時器
$('body').stopTime ();

//停止$('body')上名稱為A的計時器
$('body').stopTime ('A');

//停止$('body')上所有呼叫test()的計時器
$('body').stopTime (test);
如果你試著打開他的原始碼,你可以發現下列這段程式碼,正是時間間隔的字串縮寫,所以我們也可以自訂自己所需要的縮寫字串,像是分,時之類的
// Yeah this is major overkill...
'ms': 1,
'cs': 10,
'ds': 100,
's': 1000,
'das': 10000,
'hs': 100000,
'ks': 1000000,
//自訂單位
'm': 60000,
'h': 360000

發表迴響