gpt4 book ai didi

ios - 忽略 Completable 上的错误 - RxSwift

转载 作者:行者123 更新时间:2023-11-28 07:54:21 25 4
gpt4 key购买 nike

有没有办法在出现错误时忽略可完成项?例如,我不想删除 Firebase Realtime Database 中的值,也不想在第一个可完成项完成时将图片删除到 Firebase Storage:

// MARK: DELETE - FUNCTION
public func delete(id: String) -> Completable {
return databaseRef.child("objects").child(id).rx.removeValueAsCompletable()
.andThen(storageRef.child("objects").child(id).rx.delete())
}

图片可能不存在于 Storage 中,因此如果子项不存在且 delete(id: String) 的 Completable 则 delete 函数返回错误函数也返回一个错误。如果第二个函数返回错误,我不想忽略它,这可能吗? RxSwift 中是否存在名为 ignoreOnError() 的函数,或者类似的东西?

感谢您的帮助!

最佳答案

没有ignoreError() ,但是您可以尝试使用 optional 来解决这个问题。 Completable.catchError可以工作,但需要您返回另一个有效的 Completable反而。它更像是“错误 map ”。

如果您只在出错时完成,那么您就已经准备就绪 catchError .

如果您需要在出错时完成,我建议您将其映射到 Observable<Void>发出 .next.completedCompletable源序列完成。借助.next的力量,您可以将错误映射到而不是完成。

假设您有一个 Observable<Void>基于你的Completable :

  1. 将您的序列转换为可选序列:.map(Optional.init)
  2. 将序列中的错误转换为 nil : .catchErrorJustReturn(nil)
  3. 返回非零值,有效地忽略错误:.filter { $0 != nil }.map { $0! }或类似的。

如果你需要 Completable最后但现在有一个Observable<Void> ,尝试再次将其转换回来:.concat(.never()).asCompletable()毕竟,您知道该过程到目前为止只产生了一个元素、一个错误或完成事件。

关于ios - 忽略 Completable 上的错误 - RxSwift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48719468/

25 4 0
文章推荐: c++ - QWebView中的登出功能
文章推荐: jQuery UI Reizable 大小问题与 box-sizing :border-box
文章推荐: jquery - 确定
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com