Сообщение от JobLack
|
С этим никогда не работал. Спасибо. Попробую.
|
Если без всяких изысков, по простому, то как то так
// количество итераций, которое надо сделать
const N = 100500 ;
// гарантировано без тормозов можно сделать итераций
const NS = 100;
let start = 0;
function workns () {
const ne = Math.min(N, start+NS)
let i;
for (i = start; i< ne; i++) {
/* тут делаем итерацию */
}
start = i;
}
function idleWork (time) {
while (time.timeRemaining() > 0 && start < N) {
workns()
}
if (start < N) requestIdleCallback(idleWork);
}
requestIdleCallback(idleWork);
Немного похоже на requestAnimationFrame, но есть возможность проверить( .timeRemaining() ) - сколько времени еще примерно есть