У меня есть долгая функция блокировки потоков в веб-приложении. Во время его выполнения хотелось бы показать иконку анимации. Я хочу использовать Window. requestAnimationFrame () . Источники, с которыми я работал:
Я понимаю, что мне нужна функция - я называю ее animateLoadingIcon () -, чтобы обновить мой рисунок. В теле функции я должен, наконец, вызвать requestAnimationFrame (animateLoadingIcon) , чтобы начать рекурсивное обновление представления.
Найдите ниже функцию animateLoadingIcon, которая в зависимости от прошедшего времени, поскольку она был вызван, вычисляет угол поворота значка.
function animateLoadingIcon() {
rotateCount = (new Date().getTime() - starttime) / 3;
if (rotateCount > 359) {
rotateCount %= 360;
}
divLoadingIcon.style.transform = 'rotate(' + rotateCount + 'deg)';
requestedAnimationFrame = requestAnimationFrame(animateLoadingIcon);
}
Функция, которую я изначально хочу выполнить, называется cal c (), где вызывается animateLoadingIcon ().
function calc() {
let randomMills = Math.random()*6000;
console.log("Start with duration: " + randomMills +"ms.")
starttime = new Date().getTime();
let recentTime = new Date().getTime();
let i = 0;
animateLoadingIcon();
while (recentTime < starttime+randomMills) {
i++;
isPrime(i);
recentTime = new Date().getTime();
}
cancelAnimationFrame(requestedAnimationFrame);
}
Я ожидаю, что колесо повернется, когда я нажимаю на кнопку, и остановится, когда останется while-l oop. Однако это не так. Может кто-нибудь указать на мои ошибки?
Ниже приведен пример jsfiddle https://jsfiddle.net/71vqarLs/8/