【问题标题】:Combine 3 single results - one stream合并 3 个单一结果 - 一个流
【发布时间】:2020-10-11 07:52:24
【问题描述】:
我正在尝试异步地逐一计算。
fun method1(): Int{
return 2+2
}
fun method2(value: Int): Int{
return value * 2
}
fun method3(value: Int): Int{
return value * 3
}
现在我希望方法 2 在方法 1 之后工作并从她那里获取结果。方法 3 在方法 2 之后也起作用,并从她那里获取结果。
是否可以使用 rxkotlin 做到这一点并将其整合到一个流中?
【问题讨论】:
标签:
rx-java
reactive-programming
rx-java2
rx-kotlin
【解决方案2】:
这可以使用flatMap 来完成,如下所示:
fun performAsyncCalculation(): Observable<Int> {
return method1()
.flatMap { result1 -> method2(result1) }
.flatMap { result2 -> method3(result2) }
}
方法在哪里:
fun method1(): Observable<Int> {
return Observable.create { emitter ->
// perform calculation to produce requiredInt1
emitter.onNext(requiredInt1)
emitter.onComplete()
}
fun method2(requiredInt1: Int): Observable<Int> {
return Observable.create { emitter ->
// perform calculation to produce requiredInt2
emitter.onNext(requiredInt2)
emitter.onComplete()
}
fun method3(requiredInt2: Int): Observable<Int> {
return Observable.create { emitter ->
// perform calculation to produce requiredInt3
emitter.onNext(requiredInt3)
emitter.onComplete()
}