【问题标题】:Flatmap my observable to subject将我的可观察对象平面图
【发布时间】:2018-02-05 16:49:12
【问题描述】:

这个问题有点棘手。

我正在尝试实现 observable 接口,一旦 observable 遇到一些情况,我需要在其中开始收听另一个 publicsubject,所以我编写了一些这样的代码:

public myAPI(){
   return  restAPI.call()
                .flatmap{ ret ->
                   if(ret == success) return myPublishSubject
                 }

能否保证在restAPI调用成功后订阅开始订阅publishsubject?

【问题讨论】:

    标签: rx-java2


    【解决方案1】:

    当有来自上游的值时调用flatMapFunction 回调,在本例中为restAPI.call()

    但是,请注意,延迟映射到 PublishSubject 可能会导致项目丢失。为避免此类问题,您可以考虑使用 BehaviorSubject 保留它收到的最后一个项目,以便 flatMap 在订阅后立即发出。

    此外,重复映射到同一个Subject 可能会导致内存泄漏和项目重复。不幸的是,您必须完成Subject 才能释放它,但随后它变得无法用于调度更多事件。 takeUntil 在这种情况下可能会有所帮助。

    【讨论】:

    • 如果总是返回相同的主题,会发生什么泄漏?
    • 该主题的订阅量不断增长,没有人退订。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2019-01-30
    相关资源
    最近更新 更多