我有一个调用的函数ajaxCall(),它简单地在服务器上进行调用并从提要中返回一个值。
我想要做的是将值从提要保存到firstInterval变量,等待 10 秒,再次调用并将值保存到secondInterval变量。然后动画网页上这些数字的增加。这是我们目前所拥有的:
setInterval(function(){
getAmounts()
}, 11000);
function getAmounts(){
firstInterval = ajaxCall();
setTimeout(() => {
secondInterval = ajaxCall();
animateValue('#bronze-price p', firstInterval, secondInterval, 10000)
}, 10000);
};
function animateValue(id, start, end, duration) {
start = parseInt(start);
end = parseInt(end);
var range = end - start;
var current = start;
var increment = end > start? 1 : -1;
var stepTime = Math.abs(Math.floor(duration / range));
var obj = document.querySelector(id);
var timer = setInterval(function() {
current += increment;
obj.innerHTML = current;
if (current == end) {
clearInterval(timer);
}
}, stepTime);
}
所以这个想法是有一个函数来获取第一个间隔,10秒后它会抓住第二个间隔并调用动画。这一切都包含在 setInterval 函数中,因此我可以反复平滑地更改数字。
但是我很确定这不是一个非常干净的解决方案,因为它包含setInterval在setTimeout另一个setInterval函数中。我也在控制台中收到了具有这两种功能的此类警告:
[违规] 'setInterval' 处理程序花费了 ms
跟进这个想法但优化代码的最佳方法是什么?
神不在的星期二
慕虎7371278
随时随地看视频慕课网APP
相关分类