将回调函数分配给变量并在高阶函数之外调用

时间:2016-07-29 11:34:07

标签: javascript typescript angular

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

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

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

...然后在MyComponent的另一个函数中调用此回调函数。 E.g:

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

然而,当我像上面那样实现这个时,会发生一个错误,说“这个.myCompVar'当我尝试在myOtherFunc'内部调用它时,它是未定义的。这让我感到困惑,因为我已经确认回调正在' myFunc'中正确设置。它的类型是'功能'。 ' myOtherFunc'在myFunc'之后也会被调用。被调用并按预期返回。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

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

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