问题描述
已修改-----------------------------------------
有一个流。
let o = Observable.just(1).concatMap(someProcedure).debug()
let o1 = o.map { "\($0 * 2)" }
let o2 = o.map { "\($0)" }
let proc = [o1,o2]
Observable.from(proc).concatMap { $0 }
.subscribe(onNext: { _ in
}).disposed(by: disposeBag)
func someProcedure(_ value: Int) -> Observable<Int> {
print("someProcedure!!")
var result = 100
// do something
return Observable.just(result)
}
在这种情况下,“ someProcedure !!”打印两次。
我只想在两个流(o1,o2)中使用func'someProcedure'的返回值
func'someProcedure'不需要执行两次。
有可能吗?
解决方法
在take(1)
上使用o
运算符仅向下游传递第一个发出的值
一个Observable,它将默认为每个订阅创建一个 new 作业。这就是为什么要打印两个过程的原因。
要解决此问题,您需要共享订阅...
childB