在for循环中使用setTimeout

编程入门 行业动态 更新时间:2024-10-27 22:32:33
本文介绍了在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

本文发布于:2023-10-26 01:25:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1528674.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:setTimeout

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!