RxKotlin,RxJava:可观察/单个未启动

时间:2020-08-25 07:36:11

标签: observable rx-java rx-java2 publish-subscribe rx-kotlin2

我有以下课程,该课程公开了Single来获取ID。

这是用来在该类的init上获取ID的,以后其他人也可以使用它来获取ID。

在我订阅此Single的其他任何地方,我都可以获得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("")
    })
}

}

1 个答案:

答案 0 :(得分:0)

之所以无法在构造函数init中工作,是因为该单被立即处置。

init {
idObservable
    .subscribe { success, _ ->
        Log.d(TAG, "Id: $success")
    }

}

上面的代码有效。