Я работаю на колесе рулетки, которое вращается в 2 этапа
1) Когда пользователь нажимает кнопку вращения, он просто вращается бесконечно, пока данные не поступают с сервера.
2) Когда данные поступают, они просто поворачиваются на угол, выбранный с сервера.
Мы выбираем данные с сервера, поскольку они содержат некоторую конфиденциальную информацию, которую мы не хотим отправлять клиенту.
Проблема, с которой я сталкиваюсь, заключается в том, что переход от 1) к 2) не является бесшовным.Вращатель неожиданно останавливается на случайное количество времени и затем запускается 2) (конечное вращение).
Вот моя скрипка js, которая является простейшей копией сценария https://jsfiddle.net/ej2c5k7z/6/
HTML:
<div id="spinning" style="background-color: red; display: inline-block">
abcdefghijkl
</div>
javascript:
let element = $("#spinning");
// Simulate random interval for data being fetched from server
let randomIntervalSeconds = Math.random()*10;
console.log(randomIntervalSeconds);
// TODO: keep rotating the element for randomIntervalSeconds
// I used below code along with setInterval with 1001 ms interval
let intervalKey = setInterval(function(){
element.css({"transform": "rotate(" + 360 + "deg)", "transition-duration": 1 + "s"});
},1001)
setTimeout(function(){
// Simulate data arrived callback.
clearInterval(intervalKey);
element.css({"transform": "rotate(" + (360+48) + "deg)", "transition-duration": 1 + "s"});
}, randomIntervalSeconds*1000)
Мне просто интересно, можно ли вообще вращать счетчик (или любой div) бесконечно, пока данные не поступят и плавно переход на конечное вращение?