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

标签 javascript typescript angular

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

...
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”时,会出现错误,提示“this.myCompVar”未定义。这让我很困惑,因为我已经确认回调已在“myFunc”中正确设置,并且其类型为“function”。正如预期的那样,在调用“myFunc”并返回后,也会调用“myOtherFunc”。

非常感谢任何帮助!

最佳答案

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

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

关于javascript - 将回调函数分配给变量并在高阶函数之外调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38657801/

相关文章:

javascript - 从外部文件加载 json

javascript - 按数字和字典顺序对多维数组进行排序javascript

javascript - 为什么函数调用不能这样工作?

javascript - 从 Angular 端发送文件后,在 Node.js 端编码大文件时出错

javascript - 将数组键推送到自己的数组

javascript - 使用带有编译 typescript 的 jasmine karma 测试组件时如何解决 "define is not defined"错误?

typescript - 如何使用 Jest 调整 Typescript StencilJS 以支持 ES6 动态模块导入

twitter-bootstrap - 使用 Bootstrap 的 Angular 4 下拉菜单

javascript - CSS 与 LeafLet

angular - @NgRx 实体之间如何建立多对多关系?