請問為什麼會在for迴圈結束才會執行非同步函式?

XiaoKuiKui發表於2014-08-30

請看這段程式碼:

for(var i=0; i<10; i++){
  var now = new Date();
  while (new Date - now < 1000);
  console.log("here");
  setTimeout(function(){
  console.log(1); //this
 }, 5000);
}

setTimeout在這應該是非同步函式吧!我使用了while來使每個迴圈延遲1s,按理當執行第一次迴圈執行了setTimeout,他會在後臺靜默執行,不會阻塞。但是console.log(1);都是在迴圈執行完成後才會輸出。請問這是什麼原因?謝謝!

另外我注意到迴圈結束後立刻輸出了4個console.log(1);那應該是執行迴圈後setTimeout就已經在後臺執行了?

相關文章