我有一個相當長的運行(3到10秒)的功能,可以在頁面的相當不常使用的部分背景中加載數據。我的問題是,每次執行的最佳運行時間和延遲時間是多少,以確保頁面的其餘部分保持相當的交互性,但是數據的加載不會因分解而過度延遲?爲響應式UI細分多長時間運行的函數?
例如:
var i = 0;
var chunkSize = 10;
var timeout = 1;
var data; //some array
var bigFunction = function() {
var nextStop = chunkSize + i; //find next stop
if (nextStop > data.length) { nextStop = data.length }
for (; i < nextStop; i++) {
doSomethingWithData(data[i]);
}
if (i == data.length) { setTimeout(finalizingFunction, timeout); }
else { setTimeout(bigFunction , timeoutLengthInMs); }
};
bigFunction(); //start it all off
現在,我已經做了一些測試,和chunkSize
能產生約100ms的執行時間和1ms的timeout
似乎產生一個非常敏感的用戶界面,但我的一些例子」我看過推薦更大的塊(〜300毫秒)和更長的超時(20到100毫秒)。我是否在將我的功能切割成太多小塊時錯過了一些危險,或者試驗和錯誤是確定這些數字的安全方法?
你知道那是JavaScript的(客戶端)的CPU,內存,網絡連接等因素大大增加。 – 2010-11-10 22:16:51
@Jason McCreary,當然。這就是爲什麼我問這個問題,而不是假設我的試錯法確定這些數字是安全的。 – jball 2010-11-10 22:20:54