首页 > 解决方案 > 循环中的 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 删除它,它将按预期输出,但不会延迟。isetTimeOut()

非常感谢您的帮助。谢谢。

标签: javascriptfor-loopsettimeout

解决方案


这是你说的 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);
}


推荐阅读