rx-swift - 在另一个订阅触发后开始订阅
问题描述
有两个可观察对象:a
和b
。我想b
在第一个 observable ( a
) 触发后订阅第二个 observable ( ) (即生成了第一个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)
但我意识到这是一种不好的做法,而不是一条路要走。
解决方案
这是一个简单的flatMap
:
let c = a.flatMap { _ in b }
您可能想.take(1)
在 flatMap 之前添加一个,或者查看不同种类的 flatMap 并查看哪个适合您的用例。最好b
在 flatMap 闭包中生成 observable,而不是像上面那样传递它。
https://medium.com/@danielt1263/rxswifts-many-faces-of-flatmap-5764e6c2018c
推荐阅读
- azure - 从 Azure 函数运行容器的最佳方法
- wordpress - Dockerfile - 在容器路径中触摸文件
- operator-overloading - Julia 中的重载与覆盖
- php - 动态打折 Woocommerce 产品
- reactjs - 如何一个接一个地调用顺序动作——并确保两者都被渲染(react-redux)?
- python - 将值附加到 Pandas 系列
- python - 最有效的字符串相似度度量函数
- java - 频繁的方向变化问题
- spring - 如何使用 mongoDB 在 Spring boot2 中将日期转换为纪元(unix 时间戳)?
- javascript - 如何创建添加调用本地主机 URL 的上下文菜单项的 Firefox 扩展