作者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