繁体   English   中英

增加和减少值

[英]Increase and Decrease the values

我有个问题。 数据数组中的值应该按照规则每 5 秒增加或减少 0.0001:值应该在第一分钟上升,然后在下一分钟下降,依此类推 -

const data = [
    { AUD: "1.5876" }, { BGN: "1.9558" }, { GBP: "0.8527" }, { USD: "1.1820" },
    { UYU: "51.9732" }, { UZS: "12570.5509" }, { VEF: "252746931045.8590" },
    { VND: "27195.9489" }, { VUV: "130.1601" }, { WST: "3.0161" }, { XAG: "0.0449" },
    { XAU: "0.0006" }, { XCD: "3.1944" }, { XDR: "0.8306" },
];

这是我的代码,但我得到了一个无限循环。

const [currencies, setCurrencies] = useState([]);
let initialTime = true;

useEffect(() => {
    let init = setTimeout(() => {
        initialTime = false;
        console.log('changing the time ' + initialTime);
    }, 5000);
    return () => clearTimeout(init)
}, []);

function increase() {
    data.forEach(e => {
        let value = Number(Object.values(e)[0]);
        const key = Object.keys(e)[0];
        setCurrencies({ [key]: value += 0.0001 });
    })
    console.log(currencies);
}

let interval = setInterval(() => {
    if (initialTime) {
        increase()
    } else {
        return () => clearInterval(interval);
    }
}, 1000);

因此,跟踪时间并确定它已经过了多长时间以及何时达到时间长度,将其翻转。

 let updateTime = Date.now(); const endTime = updateTime + 20000; let dir = 1; let value = 1.2357; const flipTime = 5000; const timer = setInterval(function () { if(Date.now() - updateTime >= flipTime) { updateTime = Date.now(); dir *= -1; } value += dir * .0001; console.log(value.toFixed(4)); // If over end time, stop looping if (Date.now() >= endTime) { window.clearTimeout(timer); } }, 1000);

旁注,setInterval 不是 100% 准确,因此您会看到数字随着时间的推移而浮动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM