【问题标题】:Why can I no longer call next() after calling complete() on an RxJs Subject?完成()后的 Rxjs 主题下一个()
【发布时间】:2016-06-21 09:31:34
【问题描述】:

我有与Subject() 连接的服务来进行分页。我正在使用next(newData) 传递给主题,这使事情保持活力,现在我需要在每个ajax 调用上使用complete() 并将其传递给主题。但在做了一个complete() 之后,我开始出错了。

我想知道,如果 completed() 已经被触发,我们还能通过 Subject observables 还是 next(newData) 吗?

【问题讨论】:

    标签: javascript rxjs observable observer-pattern rxjs5


    【解决方案1】:

    有一些关于堆栈溢出问题的主题的信息:here。我鼓励您查看它。

    关于您的具体问题,主题一旦完成就不能再发出。这是他们遵守的合同的一部分。根据您的应用程序的逻辑和流程,您可以:

    • 决定不完成该主题(如果您以后仍然需要它,为什么还要完成它?)
    • 在您需要时创建一个新主题,然后您必须将其传递给需要它的人。

    【讨论】:

    • 因为调用的http请求发送了一个完整的-不是我想要的,并且杀死了我的主题...是的,我确实想将项目客户端添加到集合中,并让主题广播这些对所有组件观察者。
    • 这种说法:“受试者一旦完成就不能再发射”实际上是错误的。 ReplaySubject 即使在完成后仍会向迟到的订阅者发出值。查看this blog post 了解有关此主题的更多详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 2021-01-24
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多