首页 > 解决方案 > 为什么 setTimeuot console.log 每秒?

问题描述

为什么 setTimeout 函数每秒执行一次 console.log 而不是增加计数?

for (let i = 1; i <= 5; i++){
     ((a) => {
          setTimeout(function() {
               console.log( a );
          }, a * 1000);
     })( i );
}

标签: javascript

解决方案


第一次通过您的循环i = 1,这意味着这i * 1000将导致您的第一个计时器在 1 秒后被调用。然后你第二次调用立即调用的函数,因为你的循环继续,这会导致你在你的循环中创建一个 SECOND 计时器i = 2。因此,i * 1000将是2000毫秒。这同样会发生i在等于 3 和 4 的情况下。所以你console.log将被如下调用:

  1. console.log使用第一个计时器在 1 秒(1000 毫秒)调用
  2. console.log使用第二个计时器在 2 秒(2000 毫秒)时调用
  3. console.log使用第三个计时器在 3 秒(3000 毫秒)时调用
  4. console.log使用第四个计时器在 4 秒(4000 毫秒)时调用

推荐阅读