顯示廣告
隱藏 ✕
看板 Knuckles_note
作者 Knuckles(阿德)
標題 [JS] 可適性週期執行的function
時間 2010年04月23日 Fri. PM 06:22:38


雖然js有 setInterval() 可以每隔一段時間執行某個function來更新資料

不過時間設太長的話不夠即時,太短的話又浪費資源

所以想弄個可適性週性執行的方法
讓使用者閒置愈久就愈慢更新

先用
	
setInterval("idle_time++",1000);
每秒把idle_time的值增加1,來記錄使用者閒置了多久

利用jQuery的事件觸發
	
$(document).keydown(function(e){ idle_time=0; });
	
$(document).mouseover(function(e){ idle_time=0; });
來偵測使用者是否有在使用鍵盤或滑鼠

接著我們就可以利用 idle_time 與 setTimeout() 來做可適性週性執行function

利用
	
setTimeout('autoUpdate()',20000);
當網頁載入後過20秒執行一次 autoUpdate()
(20000ms = 20s)

然後在 autoUpdate() 中這樣寫:

function autoUpdate(){
	
if(idle_time>=20){ //要閒置20秒才會執行,避免使用者正在操作時自動更新
	
	
// 更新資料程式
	
}
	

	
if(idle_time<60) setTimeout('autoUpdate()',20000);
	
else if(idle_time<300) setTimeout('autoUpdate()',60000);
	
else if(idle_time<1200) setTimeout('autoUpdate()',300000);
	
else setTimeout('autoUpdate()',3600000);
}

這樣使用者正在操作時就不會自動更新,而
閒置了20sec~1min時,每20sec執行一次
閒置了1min~5min時,每1min執行一次
閒置了5min~20min時,每5min執行一次
閒置了20min以上時,每小時執行一次

這樣就達到可適性週期執行的效果了

要注意執行 autoUpdate() 最後一定要有 setTimeout() 再把自己執行一次
如果前面設了個 return 跑出去的話,就不會再自動執行了



--
※ 來源: DISP BBS 看板: Knuckles_note 文章連結: http://disp.cc/b/11-1K6
※ 作者: Knuckles  來自: 118.166.112.125  時間: 2010-04-23 18:22:38
※ 編輯: Knuckles  來自: 118.166.112.125  時間: 2010-04-23 18:24:04
※ 編輯: Knuckles  來自: 118.166.112.125  時間: 2010-04-23 18:25:20
※ 編輯: Knuckles  來自: 118.166.112.125  時間: 2010-04-23 20:32:26
※ 編輯: Knuckles  來自: 118.166.112.125  時間: 2010-04-23 20:34:10
※ 看板: KnucklesNote 文章推薦值: 3 目前人氣: 0 累積人氣: 845 
( ̄︶ ̄)b showyou, abc1231qa 說讚!
1樓 時間: 2010-04-23 20:28:02 (台灣)
  04-23 20:28 TW
推一個 滿實用的
uefangsmith 轉錄至看板 uefacool 時間:2010-04-23 20:28:16
ott 轉錄至看板 ott 時間:2010-11-18 13:57:15
e)編輯 d)刪除 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇