作者TonyQ (沉默是金)
看板Ajax
標題Re: [問題] function 裡的 setTimeout 與 變數
時間Tue Oct 7 15:15:56 2008
※ 引述《xam (聽說)》之銘言:
: ※ 引述《TonyQ (沉默是金)》之銘言:
: 我也想請教一下, 跟前一篇的問題類似
: 如果我要用 setTimeout() 作排程, 一次設定多個 event 要怎麼作?
: 例如我有以下資料
: var s = [[10, "Hello"], [15, "World"], [3, "Hi"]];
: 想要在 3 秒後顯示 Hi
: 10 Hello
: 15 World
: 下面這樣的作法只能處理最後一筆, 換成 function 也一樣
: for(i in s)
: {
: setTimeout("alert(s[i][1])", s[i][0]*1000);
: }
: 目前的是用, 可行,但是有點怪
: for(i in s)
: {
: callback = "alert('"+s[i][1]+"')";
: setTimeout(callback, s[i][0]*1000);
: }
我覺得這樣還算合理啊 , 雖然timeout一多會拖垮效能.:p
或者這樣的寫法?
var workqueue=[[10, "Hello"], [15, "World"], [3, "Hi"]];
setInteral(
function(){
for(var i=0;i<workqueue.length;++i){
if(workqueue[i]!=null){
--workqueue[i][0];
if(workqueue[i][0]==0) alert(workqueue[i][1]);
workqueue[i]=null;
}
}
},1000
);
當然...這只是順手草擬的 -.-a
真的有興趣要作還可以加入heap tree 來作時間差的排序,
讓他看起來更真實跟更有效能一點...
--
印象中不少人都做過timer 的機制了 , 找找應該就會有現成的.
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.219.202
1F:→ TonyQ:這只是草擬的 , 沒有實際測過...:p 10/07 15:16
2F:→ xam:其實我的問題是取 i 值的時機 @@ 10/07 15:18
3F:→ TonyQ:原來我看錯問題了 慚愧 :p 10/07 15:37