
视图控制器:
class ExampleVIEwController: VIEwController { .... private let exampleStream: PublishSubject<Bool> init() { self.exampleStream = PublishSubject<Bool>() } vIEwDIDLoad() { self.viewmodel = viewmodelFactory.create(exampleStream.asObservable()) self.exampleStream.onNext(true) } ....} 视图模型:
class Exampleviewmodel { init(stream: Observable<Bool>) { stream.flatMap { _ in doSomethingAsyncThatReturnsAnObservable() } } private func doSomethingAsyncThatReturnsAnObservable() -> Observable<CustomObject> { ... }} 我的问题是当流中只有一个事件时,doSomethingAsyncThatReturnsAnObservable()被调用两次.我用var count = 1检查了这个事实; stream.subscribeNext {_ in print(count)},打印1.
任何想法为什么subscribeNext()在每个事件上触发一次但flatMap()会触发两次?
这是因为flatMap调用了每个订阅.如果你希望它被调用一次使用shareReplay(1)
总结以上是内存溢出为你收集整理的swift – flatMap()在单个事件上调用两次全部内容,希望文章能够帮你解决swift – flatMap()在单个事件上调用两次所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)