有两个可观测值:a
和b
。我想订阅第二个可观测(b
)之后,第一个可观测(a
)已经启动(即已经产生了非常第一个onNext
事件)。
我试过了
b.skipUntil(a).subscribe(onNext:{
print("B: \($0)")
}).disposed(by: _bag)
但没有运气,因为b
是一个寒冷,可观察。据我所知,它立即启动,并被skipUntil(a)
阻塞。
这一办法似乎有效:
a.subscribe(onNext:{_ in
// ... handle a ...
b.subscribe(onNext:{
print("B: \($0)")
}).disposed(by: self._bag)
}).disposed(by: _bag)
但我意识到这是一种糟糕的做法,而不是一条路可走。
发布于 2020-01-09 11:17:11
这是一个简单的flatMap
let c = a.flatMap { _ in b }
您可能希望在.take(1)
之前添加一个flatMap,或者查看flatMap的不同品种,看看哪一个适合您的用例。最好在b
闭包中生成可观察到的flatMap,而不是像上面那样传递它。
https://medium.com/@danielt1263/rxswifts-many-faces-of-flatmap-5764e6c2018c
https://stackoverflow.com/questions/59661260
复制相似问题