【问题标题】:Pass a typescript class method as a callback将 typescript 类方法作为回调传递
【发布时间】:2018-02-26 17:53:55
【问题描述】:

我正在尝试在 Firebase 函数上使用 Typescript,定义一个类,该类具有我想作为回调传递的方法以导出函数代码。 我试过这个:

class Foo {
  bar (data) { return data.bar; }
  handler(event) { return this.bar(event.data); }
}

在我尝试过的 index.ts 上:

functions.pubsub.topic('subscriptions').onPublish(new Foo().handler);

但我得到了cannot access property 'bar' of undefined,这意味着thishandler 内部是未定义的。

然后我尝试使用调用方法为:

const fooInstance = new Foo()
functions.pubsub.topic('subscriptions').onPublish((event) => fooInstance.handler.call(fooInstance, event));

但我得到了同样的错误。我现在一头雾水。有什么建议吗?

【问题讨论】:

    标签: typescript firebase google-cloud-functions


    【解决方案1】:

    这是一个应该可以工作的版本......虽然我不知道你的 onPublish 期望什么,所以我现在已经在一个变量中捕获了结果,因为我不知道你想用它做什么.

    functions.pubsub.topic('subscriptions').onPublish((event) => {
        const result = new Foo().handler(event);
    });
    

    【讨论】:

    • 嘿@Fenton,onPublish 需要一个返回承诺的函数,所以这可能确实有效。我会回来报告的。
    • 实际上,我使用call 的解决方案效果很好,但我还是会使用你的解决方案,因为它更具可读性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多