Re: [問題] function 裡的 setTimeout 與 變數
※ 引述《xam (聽說)》之銘言:
: ※ 引述《TonyQ (沉默是金)》之銘言:
: : 前者在eval的時候是設了一個全域變數 isWait ,
: : 而後者讀到的時候 , 區域變數 isWait 已經不可見 , 所以出現undefined.
: : 建議是採用function的方案來保存scope.
: : ex.
: : function b() {
: : var isWait = true;
: : setTimeout(function(){alert(isWait);}, 3000);
: : }
: 我也想請教一下, 跟前一篇的問題類似
: 如果我要用 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);
: }
只要結果出得來,就可以吧?
另一個方法是你先對s做排序,另外加一個變數來track目前處理s的index
例如:
var s = [[10, "Hello"], [15, "World"], [3, "Hi"]];
s.sort(function(a,b){return a[0]-b[0];});
var j = 0;
for(var i in s) {
setTimeout(function(){alert(s[j][1]);j++;},s[i][0]*1000);
}
--
Sapere Aude! 這就是啟蒙運動的口號!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.95.16
→
10/07 16:18, , 1F
10/07 16:18, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):