Почему setTimeout не работает?(цепочка прицелов) - PullRequest
0 голосов
/ 19 июня 2019

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

Короче говоря, когда я нажимаю пробел, моя программа должна:

  • изменить изображение на другое изображение (рабочий)
  • сохранить отрицательную y-траекторию изображения (рабочий)
  • Подождите одну секунду и вызовите метод, которыйизменяет изображение (не работает)

Вот мой код:

    jump() {
        console.log("space bar pressed to jump");
        this.setDirection(Constants.SKIER_DIRECTIONS.JUMP_ONE);
        turnDown = () => { this.setDirection(Constants.SKIER_DIRECTIONS.DOWN); }
        setTimeout(turnDown, 1000);
     }

Вместо того, чтобы возвращаться к исходному изображению, анимационное изображение остается на неопределенное время.

Вот сообщение об ошибке, которое я получаю:

Uncaught ReferenceError: turnDown is not defined

Я просмотрел похожие посты, и их структура очень похожа на мою, но, возможно, это как-то связано с моим синтаксисом (функция стрелки) для turnDown?

Любое понимание приветствуется.

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Ваш код выполняется в строгом режиме неявно из-за объявления class (я подозреваю, что вы находитесь в теле class), поэтому присвоение ранее необъявленной переменной недопустимо, поэтомуисключение.В нестрогом режиме присваивание создало бы глобальную переменную.Если вы выполните рефакторинг с объявлением const / var / let, это будет хорошо.Вы также можете встроить объявление функции и использовать объявление ключевого слова function, позволяющее вам иметь имя для этой функции и лучшую трассировку стека, если она выдаст.

1 голос
/ 19 июня 2019

Вы пытаетесь присвоить turnDown чему-то, что не существует - просто добавьте var перед ним - var turnDown = ...

...