RxSwift,有时.dispose被调用而没有调用.subscribe

时间:2018-12-24 04:06:00

标签: dispose rx-swift

在RX代码中,.disposed被调用而无需执行任何操作,例如flatmap,subscribe。仅在我第一次构建应用程序时才会发生这种情况。

有人知道这里会发生什么吗?

这是我的代码

HTTP.getSomething()
        .flatMap { (list) -> Single<Void> in

            return HTTP.getList(withList: list)
        }
        .subscribe(onSuccess: { (storeList) in
            log.debug("Finish!!!")
        }, onError: { [weak self] (error) in
            self?.presentAlert(error: error)
        })
        .disposed(by: self.disposeBag) 

1 个答案:

答案 0 :(得分:0)

在不尝试flatMap内部工作的情况下,可以处置所呈现的代码的唯一方法是,如果getSomething发出完成而不发出值,或者它发出错误,或者删除了disposeBag 。这三件事之一正在发生。

由于您说它仅在首次构建时发生,所以我怀疑getSomething试图在进行网络调用之前获得所需的所有信息,这将导致它发出错误。