2017-02-14 49 views

回答

4

沒有。 map是一個同步操作。

setTimeout(function() { 
 
    console.log('run as soon as possible'); 
 
}, 0); 
 

 
[1, 2, 3, 4, 5].map(function(x) { 
 
    console.log(x); 
 
});

事件循環基本上打破了這樣的:

  1. 運行同步碼
  2. 事件隊列添加項目,如需要
  3. 完成運行同步碼
  4. 檢查事件隊列中是否有應立即執行
  5. 如果異步代碼就可以運行,啓動它同步碼,並返回到1
  6. 如果沒有代碼,就可以運行而Y碼,返回4
+0

所以說你打造通過'map'建立一個函數數組,大概如果你在下一行執行這些函數'setTimeout'應該在這些函數執行之前觸發? – maxcountryman

+0

@maxcountryman如果您在映射之後直接運行任何更多的同步代碼,那麼該代碼將在函數傳遞給setTimeout之前運行 –

+0

您是說'setTimeout'在下一行同步代碼之前不會執行其回調? – maxcountryman

相關問題