当前位置: 首页 > 知识库问答 >
问题:

RxJava CompletableSubenttoFlowable/to观察不发出

於功
2023-03-14

所以我有一个制片人/出版商,它是CompletableSubject

我想要一个供订阅者/观察者使用的只读版本,但toFLowable()toWatable都没有发射任何东西

我错过了什么?

kotlin prettyprint-override">fun main() {
    val publisher = CompletableSubject.create()

    val readOnlyStream = publisher.toFlowable<Any>()

    println("1 ${publisher.hasComplete()}")
    readOnlyStream.subscribe { item ->
        println("yay, got it $item")
    }

    println("2 ${publisher.hasComplete()}")
    publisher.onComplete()
    println("3 ${publisher.hasComplete()}")

    Thread.sleep(3000L)
}

输出:

1 false
2 false
3 true

我找到了奇怪的解决方法

fun main() {
    val publisher = CompletableSubject.create()

    val readOnlyStream = publisher.toSingle {
        "doneee"
    }

    println("1 ${publisher.hasComplete()}")
    readOnlyStream.subscribe { item ->
        println("yay, got it $item")
    }

    println("2 ${publisher.hasComplete()}")
    publisher.onComplete()
    println("3 ${publisher.hasComplete()}")

    Thread.sleep(3000L)
}

输出:

1 false
2 false
yay, got it doneee
3 true

共有1个答案

蒋高杰
2023-03-14

正如akarnokd在评论中所说,readOnlyStream.subscribe{Item-

readOnlyStream.subscribe(
    {}, // onNext, called for each item
    {}, // onError, called once when there is an error
    { println("yay, got onComplete") }, // onComplete, called once when completed
)

完整主题的订阅方法没有onNext方法,因为Completables不发出任何项目,只发出onError或on完整事件。

 类似资料:
  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 我有一个视图模型,从场景中接收流作为livedata 在活动中,我们订阅了这个livedata,一些逻辑发生并使用了activityResult 当我们返回时,我们会用最后一个状态触发一个观察者,并再次执行之前的导航逻辑 如何忽略返回时具有相同值的观察者触发器?

  • 此外,为什么Viewmodel不能观察到它自己的LiveData的变化?

  • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?

  • 我们支持使用分布式消息系统,例如 etcd 来保持多个Casbin执行器实例之间的一致性。 因此,我们的用户可以同时使用多个Casbin 执行器来处理大量的权限检查请求。 与策略存储 adapters类似,我们没有把watcher的代码放在主库中。 任何对新消息系统的支持都应该作为watcher程序来实现。 完整的Casbin watchers列表如下所示。 欢迎任何第三方对 watcher 进行

  • 我在工具栏上有一个搜索视图图标,通过创建选项菜单(菜单菜单)。单击该图标将创建一个 EditText 行,供用户输入搜索输入。我有一个文本观察器()附加到编辑文本行,以便当文本添加到该行时(在文本更改可编辑之后),搜索查询方法通过搜索房间数据库的视图模型运行。 我的问题是,观察者甚至在用户输入任何查询之前就开始创建了。使用Toasts,我能够在用户按下SearchView图标时以及用户输入任何搜索