本文介绍了在for循环中使用setTimeout的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试编写打印5等待1秒、打印4等待2秒、打印3等待3秒的函数
我写了这个函数:
for(let i=5;i>0;i--){ setTimeout(()=>{ let localTime = new Date().toLocaleString(); console.log(`${i} - ${localTime}`) },5-i*1000); }打印:
'5 - 10/30/2019, 11:10:17 AM' '4 - 10/30/2019, 11:10:17 AM' '3 - 10/30/2019, 11:10:17 AM' '2 - 10/30/2019, 11:10:17 AM' '1 - 10/30/2019, 11:10:17 AM'我写了一组语句:
console.log(new Date().toLocaleString()); setTimeout(()=>{ let localTime = new Date().toLocaleString(); console.log(`${5} - ${localTime}`) },1000) setTimeout(()=>{ let localTime = new Date().toLocaleString(); console.log(`${4} - ${localTime}`) },2*1000) setTimeout(()=>{ let localTime = new Date().toLocaleString(); console.log(`${3} - ${localTime}`) },3*1000) setTimeout(()=>{ let localTime = new Date().toLocaleString(); console.log(`${2} - ${localTime}`) },4*1000) setTimeout(()=>{ let localTime = new Date().toLocaleString(); console.log(`${1} - ${localTime}`) },5*1000)和这些打印:
'10/30/2019, 11:13:45 AM' '5 - 10/30/2019, 11:13:46 AM' '4 - 10/30/2019, 11:13:47 AM' '3 - 10/30/2019, 11:13:48 AM' '2 - 10/30/2019, 11:13:49 AM' '1 - 10/30/2019, 11:13:50 AM'第二组语句将时间增加了1秒,但For循环中设置的超时未执行。
如何实现该功能?我哪里出错了?
推荐答案操作顺序
5 - 1 * 1000 5 - (1*1000) 5 - 1000 -995它需要有括号
},(5-i) * 1000);不使用for循环的更好方法是创建一个函数,并让计时器递归地调用它,直到它完成。
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假"> function countDown (max) { function execute () { let localTime = new Date().toLocaleString(); console.log(`${max} - ${localTime}`) max -= 1 if (max>0) window.setTimeout(execute, 1000) } execute() } countDown(5);更多推荐
在for循环中使用setTimeout
发布评论