看板 Knuckles_note
作者 標題 [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
回列表(←)
分享