Function.intervalize released

Function.intervalize 已經釋出於 JSAN。也可於和多下載區下載 Function-intervalize-0.01.tar.gz。此為 JSAN 的標準散佈檔,解開之後原始碼位於 lib/Function/intervalize.js,可直接以 script 標籤的方法載入。

這個模組是為了解決此項特定的問題:函式可能常常會在一段很短暫的時間內被大量呼叫好幾次,使得 CPU 使用率突然飆高。比如說,如果我有一函式 notify():

function notify(msg) {
// 在畫面左下角顯示一小段訊息
}

其達成功能,是在畫面某處顯示訊息(如 MSN 的上線通知),並於一小段時間後消失。基於 Javascript 多頭執行的特性,這個函式可能會在多處被呼叫,甚至,有可能在同一秒內被呼叫數十次(MSN 的聯絡人的確也有可能突然在同一秒內有數人同時上線)。那麼,可以想像的是,顯示的提醒訊息將會突然蓋滿畫面而失去其原本的功用。

此時的解決辨法,便是固定讓它每秒出現一則就好。使用 Function.intervallize 的話,則改用以下的寫法便可:

var notify = (function(msg) {
// 在畫面左下角顯示一小段訊息
}).intervalize(1000);

如此一來,即便是連續呼叫 notify 五次:

notify("foo");
notify("bar");
notify("baz");
notify("foobar");
notify("foobaz");

也不會一次出現五則,而是在五秒鐘內,每秒出現一則。intervalize() 方法的參數便是區間的毫秒數。在此時間區間之內,原函式的功能保證只會進行一次。

(本文同時 Cross Post 於 hsinchu.js)

Cheers,

Kang-min Liu

註:openjsan.org 的 Index 目前尚未更新,靜待一、二日便可見到下載的連結。


About this entry