在每个i=i+1之间设置一个延迟



我有一个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)
   }
})()

最新更新