我有一个for
循环,它创建了一个数字1-40的数组。当用户按下向上或向下键时,数字通过i++
和i—-
增加或减少。
出于某种原因,这很有效,每个数字都以稳定的速度变化——但它比我想要的要快一点,我不知道如何操作它
有没有一种JavaScript方法可以使i = i + 1
停止几毫秒,然后在每次迭代中重复?
Ciao,您可以编写以下内容:
function wait() {
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, 1000); // lets say wait one second
});
}
然后点击功能,你可以调用:
async buttonClick = () = {
await wait();
// increase value and do stuff
};
您可以检查将冲压时间保存到全局变量(如pressTime = new Date();
(,并检查与当前时间的差异(如new Date() - pressTime
(,它将返回milliseconds
中的差异,因此使用您想要的时间间隔。如果它大于您的预期时间,则更新值和pressTime
。
请在下面试试。
document.getElementById('input').onkeydown = keydown;
let i = 0;
let pressTime = new Date();
function keydown(e) {
if ((e.keyCode == '38' || e.keyCode == '40') && new Date() - pressTime > 1000) {
e.keyCode == '38' ? i++ : i--;
pressTime = new Date();
document.getElementById('input').value = i;
}
}
<input id='input' type='text' value='0' />
function delay(ms) { return new Promise((resolve, reject) => setTimeout(resolve, ms))}
(async ()=>{
for(var i=0;i<40;i++){
await delay(2000)
}
})()