Как получить ссылку на обратный вызов в функции анонимного обратного вызова в Javascript - PullRequest
0 голосов
/ 23 октября 2018

[Неактуально]
Мой вопрос возникает, когда я сейчас занимаюсь разработкой и игрой с игровым движком Cocos Creator, использующим Typescript.
[Соответствует]
У меня есть следующий код:

    this.schedule(() => {

    }, 1)

эта функция получает обратный вызов и номер, который является временем повторения этого обратного вызова (это повторяющаяся функция таймера).

Хорошо, это будет запланировано навсегда до тех пор, пока я не запущу следующую функцию.

    this.schedule(() => {
        this.unschedule(callback_fn);
    }, 1)

Функция unschedule () получает обратный вызов, чтобы остановить это расписание, поэтому я должен иметь возможность остановить запланированноефункция в той же функции обратного вызова, ссылаясь на этот обратный вызов.

Я могу сделать это:

this.schedule( this.callbackSchedule, 1)

private callbackSchedule() {
    console.log("test");
    this.unschedule(this.callbackSchedule);
}

, который работает, он напечатает тест один раз.

Мой вопрос

Как я могу сослаться на анонимный обратный вызов в собственном обратном вызове?это возможно?

1 Ответ

0 голосов
/ 24 октября 2018

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

this.myCallback = () => { /*...*/ };
this.schedule(this.myCallback, 1);

// Later:
this.unschedule(this.myCallback);

Это не кажется мне лучше, чем ваш подход с callbackSchedule, определенным как метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...