• Почему интервал в setTimeout не изменяется?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    В нулевой момент времени вы запускаете десять интервалов. Каждый из них срабатывает именно "через увеличивающиеся интервалы" - первый сразу, второй через секунду с момента установки, третий через две секунды и так далее.

    Вот так должно быть понятнее:
    setDelay = param => {
      setTimeout(() => console.log("выполнен", param), param*1000)
    }
    
    for(var i = 0; i < 10; i++) {
      setDelay(i);
      console.log("установлен", i);
    }


    Если же вы хотите устроить именно "лесенку", код будет сложнее:
    setDelay = async (param) => {
      return new Promise((resolve) => {
        setTimeout(() => {
          console.log("выполнен", param);
          resolve();
        }, param * 1000);
      })
    }
    
    for(var i = 0; i < 10; i++) {
      console.log("установлен", i);
      await setDelay(i);
    }
    Ответ написан
    2 комментария