Yahoo!ウィジェットでのsetTimeout

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;

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください