可能重複:
How to Use setTimeout in a for…loop
calling setTimeout with a for loop的setTimeout在for循環和範圍的決議問題
對於我來說,setTimeout
功能不會在for循環工作。執行完循環語句後執行。
我正面臨着這個範圍問題的情況下在javascript中的setTimeout
函數。
這裏是我的代碼片段..
... moves[] is an array ..
for(i=0;i<noOfMoves;i++) {
playerName = moves[i].playerName;
timeDiff = moves[i].timeDiff;
console.log("Inside for loop"+ playerName);
setTimeout(function(){
console.log("Inside set time out :"+playerName);
},timeDiff);
....
....
}
但它笨拙打印出下面的輸出...
Inside for loopplayer1
Inside for loopplayer2
Inside for loopplayer3
Inside for loopplayer4
.... (noOfMoeves times ..)
Inside set time outplayer1
Inside set time outplayer1
Inside set time outplayer1
Inside set time outplayer1
編輯:的
我想O/P以下方式
我期待打印「Inside for loop
」控制檯日誌首先,然後等待「timeDiff
」期間,然後打印「Inside settimeout
」功能控制檯日誌..我怎麼能做到這一點? -
Inside for loopplayer1
Inside set time outplayer1 // (after waiting for timeDiff time)
Inside for loopplayer2
Inside set time outplayer2 // (after waiting for timeDiff time)
......
......
另外,playerName變量在每個settimeout控制檯日誌語句中獲得相同的值嗎?
常見的關閉問題。有人會發現這個笨蛋比我快。 :) – epascarello
令人驚訝的是,當人們搜索時可以找到什麼。我的查詢是[for循環中的javascript settimeout](http://stackoverflow.com/search?q=javascript+settimeout+in+for+loop)。第一個結果。 – 2012-06-14 16:21:56
@user:你確定你的輸出是*「Inside set time ** outplayer1 **」*,而不是*「Inside set time ** outplayer4 **」*? – 2012-06-14 16:29:59