Javascript 循环中的 setTimeout 未按预期工作

Javascript setTimout in loop not working as expected

我想使用 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 如果我从 setTimeOut() 中删除 i 它将按预期输出但不会延迟。

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

这是 bcz 你让 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);
}

我认为这是你想要做的事情:

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 * (array.length - i));
}