【发布时间】:2010-11-10 22:11:51
【问题描述】:
我有一个运行时间相当长(3 到 10 秒)的函数,它在后台为页面中很少使用的部分加载数据。我的问题是每次执行的最佳运行时间和之间的延迟时间是多少,以确保页面的其余部分保持相当的交互性,但数据的加载不会因分解而过度延迟?
例如:
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
现在,我进行了一些测试,产生大约 100 毫秒执行时间的 chunkSize 和 1 毫秒 timeout 似乎产生了一个响应非常灵敏的 UI,但我看到的一些示例推荐更大的块 ( ~300 毫秒)和更长的超时时间(20 到 100 毫秒)。将我的函数切割成太多的小块,我是否遗漏了一些危险,或者反复试验是确定这些数字的安全方法?
【问题讨论】:
-
您确实意识到机器的JavaScript(客户端)CPU,内存,网络连接等因素非常重要。
-
@Jason McCreary,当然。这就是为什么我要问这个问题,而不是假设我确定这些数字的试错法是安全的。
标签: javascript settimeout