У меня довольно длительная (от 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
Теперь я провел некоторое тестирование, и chunkSize
, который дает время выполнения около 100 мс, а 1 мс timeout
, кажется, дает довольно отзывчивый интерфейс, но некоторые примерыЯ видел, рекомендую гораздо большие куски (~ 300 мс) и более длительные тайм-ауты (от 20 до 100 мс).Я упускаю некоторые опасности, разбивая свою функцию на слишком много маленьких кусочков, или метод проб и ошибок является безопасным способом определения этих чисел?