http://jsfiddle.net/Codemonkey/ye5qv/2/爲什麼由setTimeout分割的工作量仍會凍結瀏覽器?
我正在嘗試編寫大量的工作負載來重複使用setInterval,以便瀏覽器可以在每次迭代工作之間捕獲它的呼吸。在我上面的示例中,我給瀏覽器在斐波那契計算的每個間隔之間保持100ms的休息時間,但從fib()
被調用到調用回調的那一刻起,瀏覽器仍然被凍結。 注:在我的例子中,FIBO功能沒有文件裝載後,前一秒,所以你可以清楚地看到它凍結了幾秒鐘
究竟爲什麼不是這種方法的工作調用,哪能讓它起作用?或者,其他方法可以達到相同的目標結果?重申一下,使用setInterval來分割工作的目標是瀏覽器應該在過程中凍結或分析。
我使用鉻,我主要關心的是V8引擎,但一個X的瀏覽器兼容的解決方案是一個獎金
我希望這只是一個例子。你知道Binet的斐波那契數字公式嗎? – MaxArt
是的,fibo函數的唯一一點是創建一個工作負載**將**導致瀏覽器凍結,除非我的方法工作 – Hubro
當工作負載開始花費更長的時間然後100毫秒時,您可能會看到重新輸入問題。請改用setTimeout,並在每次完成工作時重置它。編輯 - 我看到小提琴使用setTimeout,但問題標題說setInterval。這是什麼? – asawyer