如何在Javascript中的匿名回调函数中获取回调的引用

时间:2018-10-23 18:07:43

标签: typescript callback reference

[无关]
我的问题是,当我目前正在开发和使用使用Typescript的cocos Creator游戏引擎进行游戏时。
[相关]
我有下一个代码:

    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 :(得分:0)

当您生成一个匿名回调并将其直接传递给函数时,如果您当时不保存引用,则该引用将消失,并且没有任何神奇的方法可以在以后获取引用。您必须在创建时保存参考,例如:

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

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

对我来说,这似乎比您将callbackSchedule定义为方法的方法要好。