Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))

Как запустить метод объекта в setInterval?

Добрый день, возникла проблема, не могу разобраться...
let position = 2;
class Step {
   constructor(pos) {
      this.step = pos;
   }

   run() {
      this.step += 1;
   }
}

const obj = new Step(position);
setInterval(obj.run, 1000);

Все норм, но не могу разобраться как запускать метод в интервале... пробовал и как выше, и так setInterval(obj.run(), 1000); и так setInterval(obj.run.call(obj), 1000); все что смог найти в сети)) ошибка и все...
  • Вопрос задан
  • 165 просмотров
Решения вопроса 3
let position = 2;
class Step {
  constructor(pos) {
    this.step = pos;
  }

  run() {
    console.log(this.step += 1);
  }
}

const obj = new Step(position);
setInterval(obj.run.bind(obj), 1000);
Ответ написан
@Inzeneries
setInterval(() => obj.run(), 1000);
or
setInterval(obj.run.bind(obj), 1000);
Ответ написан
Комментировать
@Mazino
setInterval переопределяет контекст функции, которую вы послали.
class Step {
  constructor(pos) {
    this.step = pos;
  }

  run = () => {
    this.step += 1
  }
}

У стрелочных функций контекст всегда определен окружением, в котором она вызвана
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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