Yahoo!ウィジェットでは
Timerオブジェクトがあり
それでタイマー処理を行います。
基本はsetIntervalと同様になっています。
1回のみで良い時のsetTimeoutを行うときは
汎用的に処理を行いたいのです。
そこで一旦、呼出しだいファンクションを避難させておいて
それを呼び出すことで回避できます。
同時にTimer.nameをシーケンス文字として活用します。
下記のようにです。
var timer = new Timer();
if (Timer_yahooCallObjList_ == null) {
timer_yahooCallObjList_ = new Array(); // {};
timer_yahooTimerList_ = new Array(); // {};
timer_yahooCallableList_ = new Array(); // {};
}
if (aaoh_kaze_Timer_yahooCallObjList_[timer.name] == null) {
timer_yahooCallObjList_[timer.name] = new Array(); // {};
timer_yahooTimerList_[timer.name] = new Array(); // {};
timer_yahooCallableList_[timer.name] = new Array(); // {};
}
// callableを非難
timer_yahooCallObjList_[timer.name].push(callObj);
timer_yahooTimerList_[timer.name].push(timer);
timer_yahooCallableList_[timer.name].push(callable);
timer.interval = timeout / 1000; // sec
timer.onTimerFired = function(event) {
var id = this.name
var callObj_ = timer_yahooCallObjList_[id].shift();
var timer_ = timer_yahooTimerList_[id].shift();
var callable_ = timer_yahooCallableList_[id].shift();
timer_.ticking = false;
callable_.call(callObj_);
};
timer.ticking = true;
var timer_yahooCallObjList_ = null;
var timer_yahooTimerList_ = null;
var timer_yahooCallableList_ = null;