【问题标题】:How best to handle large external API so that a single instance can be shared among multiple components?如何最好地处理大型外部 API,以便可以在多个组件之间共享单个实例?
【发布时间】:2016-11-01 10:48:37
【问题描述】:

我想使用large external API 创建一个对象的单个实例,并在我的应用程序的多个组件之间共享它。

这个 API 有几个我需要实现的事件方法(例如onJoin()、onClose()、onOpen() 等)。由于不同的事件与我的应用程序的不同组件相关联,我正在考虑在这些组​​件中实现这些事件,而不是在 Singleton 类中全部实现。

另外,我想知道我是否应该——甚至可以——让这些事件方法中的每一个触发使用EventEmitter 创建的自定义事件,并在每个相关组件类中准备好监听器方法来处理这些事件.但似乎EventEmittercan only be used by components and directives,不是普通的类。

另一个问题是我应该为这个对象创建一个 Singleton 类还是将其视为一种“服务”并将其注入到依赖组件中。

非常感谢任何帮助!

谢谢

【问题讨论】:

  • 我会推荐一个Service来进行网络调用,它也有利于缓存。

标签: typescript angular webrtc


【解决方案1】:

我没有使用 EventEmitter,经过一些试验和错误后我发现它不起作用(事件回调函数被延迟调用,或者根本不调用),我在外部库中实现了回调函数。这些初始函数使用 window.dispatchEvent(event) 来发出一个 CustomEvent,并将它们的原始“事件”参数传递给它。然后可以使用@HostListener('window:onWhatever', ['$event']) 在我的应用程序中获取此事件。

Here 是我从中获得此解决方案的地方。

我还使用服务来处理初始化外部库对象并封装其功能和选项。这种方法似乎效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2016-03-07
    • 2020-12-05
    • 2017-03-20
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多