【问题标题】:Assign callback function to a variable and call outside of higher-order function将回调函数分配给变量并在高阶函数之外调用
【发布时间】:2016-07-29 19:39:10
【问题描述】:

我希望将回调函数分配给组件变量...例如

...
export class MyComponent {
       private myCompVar: any;

       myFunc = function(callback: (number) => void): void {
              this.myCompVar = callback;
       }
}

...然后稍后从 MyComponent 的另一个函数中调用此回调函数。例如:

...
export class MyComponent {
       private myCompVar: any;
       ...
       myOtherFunc(event): void {
               ...
               this.myCompVar(callbackParam);
       }
}

但是,当我像上面那样实现它时,当我尝试在“myOtherFunc”中调用它时,会出现一个错误,指出“this.myCompVar”未定义。这让我感到困惑,因为我已经确认在“myFunc”中正确设置了回调,并且它的类型是“函数”。在调用“myFunc”并返回后,“myOtherFunc”也会被调用,正如预期的那样。

非常感谢任何帮助!

【问题讨论】:

    标签: javascript typescript angular


    【解决方案1】:

    通过使用function,您将丢失正确的this 上下文。我建议改用 lambda(胖箭头函数),它正确绑定到正确的 this 上下文:

    myFunc = (callback: (number) => void): void => {
        this.myCompVar = callback;
    }
    

    【讨论】:

    • 天哪,效果很好! Rinukkusu,你是一个天才和学者。太感谢了!有一个非常棒的一天。
    • 哈哈,没问题——你也一样! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多