Rx java 在onDispose期间对RxJava链中的对象执行操作
我有一个像这样的RxJava链:Rx java 在onDispose期间对RxJava链中的对象执行操作,rx-java,rx-java2,Rx Java,Rx Java2,我有一个像这样的RxJava链: Single.timer(500, TimeUnit.MILLISECONDS) .map { createMyObject() } .doOnDispose { // how to access MyObject here? I want to call: myObject.dismiss() } .subscribe { myObject -> // do someth
Single.timer(500, TimeUnit.MILLISECONDS)
.map { createMyObject() }
.doOnDispose {
// how to access MyObject here? I want to call:
myObject.dismiss()
}
.subscribe { myObject ->
// do something with myObject
}
但是,.doOnDispose
需要一个操作
而不是消费者
,因此我无法访问其中先前映射的myObject
我现在要做的是在Rx链之外有一个外部可调零变量来保存对象:
var myObject: MyObject? = null
Single.timer(500, TimeUnit.MILLISECONDS)
.map {
myObject = createMyObject()
return@map myObject
}
.doOnDispose {
myObject?.dismiss()
}
.subscribe { myObject ->
// do something with myObject
}
但我不喜欢把它暴露在外链的想法。有更好的方法吗?您可能应该使用
Single.use
在适当的时候正确处理dispose操作
差不多
Single.using({createMyObject()}, {something(it)}, {it.dismiss}).subscribe{...}
看