Ingernirated
@Ingernirated
Романыч

Почему setTimeout не изменяет время в цикле?

Всем привет!
Подскажите, хотел сделать срабатывание функций в разное время, но они срабатывают в одно.
https://jsfiddle.net/f8zkLc2u/4/
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
setTimeout(show(i), i * 300);

Вместо того, чтобы передать в setTimeout функцию, вы её вызываете.

Какие есть варианты исправить косяк:

  1. Оберните вызов своей функции в другую функцию, которая будет передана в setTimeout:

    setTimeout(() => show(i), i * 300);

  2. Выполните привязку параметра:

    setTimeout(show.bind(null, i), i * 300);

  3. Передавайте свою функцию в setTimeout, а параметры, с которыми она должны быть вызвана, укажите отдельно:

    setTimeout(show, i * 300, i);

  4. Перепишите свою функцию так, чтобы она возвращала другую функцию:

    function show(x) {
      return function() {
        // сюда помещаете то, что находится у вас в show сейчас
      };
    }

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы