有两个可观察值: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)
但是我意识到这是一种不好的做法,不是可行的方法。
答案 0 :(得分:1)
那是一个简单的flatMap
:
let c = a.flatMap { _ in b }
您可能想在flatMap之前添加一个.take(1)
或查看flatMap的不同种类,然后查看哪个适合您的用例。并且最好是在flatMap闭包内部生成b
可观察的对象,而不是像上面那样传递它。
https://medium.com/@danielt1263/rxswifts-many-faces-of-flatmap-5764e6c2018c