为什么两种方法的输出不同?这是什么原因呢?
当我使用不同的运算符组合时,我期望得到相同的输出,但结果不是我期望的。我想知道这里使用map和使用flatMap之间的区别,以及为什么它会导致不同的输出
func test1() {
let sb1 = RxRelay.BehaviorRelay(value: true)
let sb2 = RxRelay.BehaviorRelay(value: 0)
Observable.combineLatest(sb1, sb2)
.filter {
print("---filter----------")
return $0 && $1 != -1
}
.debug("---debug")
.observe(on: MainScheduler.asyncInstance)
.take(1).map { $1 }
.do(onNext: {
print("---next value \($0)")
})
.do(onCompleted: {
print("---send next")
sb2.accept(12)
})
.subscribe()
.disposed(by: disposeBag)
}
func test2() {
let sb1 = RxRelay.BehaviorRelay(value: true)
let sb2 = RxRelay.BehaviorRelay(value: 0)
Observable.combineLatest(sb1, sb2)
.filter {
print("---filter----------")
return $0 && $1 != -1
}
.debug("---debug")
.observe(on: MainScheduler.asyncInstance)
.take(1).flatMap { Observable.just($1) }
.do(onNext: {
print("---next value \($0)")
})
.do(onCompleted: {
print("---send next")
sb2.accept(12)
})
.subscribe()
.disposed(by: disposeBag)
}