observable - RxKotlin,RxJava:Observable/Single 未启动
问题描述
我有以下类,它公开一个 Single 来获取 ID。
这用于在该类的 init 上获取 ID,以后其他人也可以使用它来获取 ID。
从我订阅此单曲的任何其他地方,我都能获得 ID。但是这里的init方法中,这个方法似乎并没有启动并获取ID。
有人可以帮我理解我所缺少的吗?谢谢
class TestClass {
val idObservable: Single<String>
get() {
return Single.create {
fetchId(it)
}
}
init {
idObservable
.subscribe { success, _ ->
Log.d(TAG, "Id: $success")
}
.dispose()
}
private fun fetchId(emitter: SingleEmitter<String>) {
Utils.fetchId(Consumer<String>{
emitter.onSuccess(it)
}, Consumer<Throwable>{
emitter.onSuccess("")
})
}
}
解决方案
它在构造函数 init 中不起作用的原因是单曲被立即处理掉了。
init {
idObservable
.subscribe { success, _ ->
Log.d(TAG, "Id: $success")
}
}
上面的代码有效。
推荐阅读
- flutter - Flutter 试图编译我删除的项目
- amazon-web-services - 从快照创建的实例在 lightail 上不起作用
- python - 基于枚举迭代或索引列表
- android - 如何循环通过xml资源以编程方式设置ID
- dialogflow-es - 如何在对话流中为特定问题添加特定答案?
- php - wordpress 木质片段插件
- python - 比较recordlinkage中每个记录对的记录时,什么是“对”?
- c# - 使用 Id 和外键的 EF 核心 2 复合主键
- python - 当我在 Python 上单击画布时如何使用键盘移动画布
- ios - 我可以将集合视图添加到集合视图部分标题吗?