2012-10-19 51 views
0

setTimeout和setInterval之間的區別是什麼,例如在UI進程中長時間運行的函數?setTimeout和setInterval不同

setTimeout(function(){ 
    /* Some long block of code... */ 
    }, 10); 

    setInterval(function(){ 
    /* Some long block of code... */ 
    }, 10); 

如果還有很長的執行時間,執行時間大於的setTimeout或setInterval的設置

+0

間隔定期運行,超時一段時間後運行一次。 –

+0

如果'long block of code'花費的時間比間隔長,那麼當使用'setInterval'時,最終會出現競爭條件。如果代碼可能需要一段時間,那麼最好使用'setTimeout',並在長代碼完成時啓動下一個定時器。 –

+0

@ user1689607-javascript是單線程的,後續調用不會發生,直到前面的調用完成。儘管瀏覽器停止響應,但間隔太短可能會佔用所有資源。 – RobG

回答

5

的setTimeout運行一次的時間,很好用,當你要麼

  1. 只想運行一次
  2. 或每個呼叫的運行時間是可變的,並且您的 需要按順序呼叫

setInterval將永遠運行,直到您調用clearInterval來取消。

因此,對於長時間運行的進程,最好使用setTimeout,然後讓setTimeout處理程序再次調用setTimeout以保持循環運行。

編輯 的問題瓦特/ setInterval的是,如果花費超過10ms長(在你的情況下),以便然後運行下一個電話可以被丟棄。

0

要回答你的其他問題,除了已經提到的問題之外沒有任何區別,兩者都得到相同的優先級。