javascript - 循环中的 Javascript setTimout 无法按预期工作
问题描述
我想使用 setTimeout 按降序打印数组。我不知道为什么下面的代码不能按降序工作。
let delay = 1000;
let array = [1, 2, 3, 4, 5];
for(let i = array.length; i > 0; i--) {
setTimeout(() => {
console.log(array[i - 1]);
}, delay * i);
}
预期输出5 4 3 2 1
延迟一秒。但它正在打印,如果我从中1 2 3 4 5
删除它,它将按预期输出,但不会延迟。i
setTimeOut()
非常感谢您的帮助。谢谢。
解决方案
这是你说的 JS 在五秒后打印“5”,然后在四秒后打印“4”,然后在三秒后打印“3”等等......实际上代码只是按照你说的做。你可以做这样的事情
let delay = 1000;
let array = [1, 2, 3, 4, 5];
for(let i = array.length, j = 0; i > 0; i--, j++) {
setTimeout(() => {
console.log(array[i - 1]);
}, delay * j);
}
推荐阅读
- python - 使用 openssl 加密文件的问题
- redirect - 我被重定向攻击了吗?
- spring-boot - 与主题上的消息发布相比,Kafka 消耗率较低
- amazon-web-services - 删除 S3 上不存在的文件会删除该文件夹(如果该文件夹是最后一个文件)。我们如何防止这种情况发生?
- sql-server-2008 - 在不影响统计信息的情况下更新 SQL Server 中列的大小
- javascript - 无法在 ASP.NET 中关闭嵌套的 showModal polyfill
- mysql - MySQL是否可以搜索一个值并使用其结果在一个语句中完成搜索?
- postgresql - Postgresql 查询性能优化
- javascript - Photoswipe 打开没有动画的幻灯片,但仅在第一次单击时打开
- powerbi - 使用警报创建带有选择条件的过滤器