gpt4 book ai didi

ios - 处理错误但保持订阅原始 Observable

转载 作者:行者123 更新时间:2023-11-28 08:16:34 26 4
gpt4 key购买 nike

假设我有一个按钮,每次点击该按钮时,我都想执行网络请求并将结果绑定(bind)到主调度程序上的 View 。我还需要处理这个网络请求可能失败的可能性。这是我最初的想法:

button.rx.tap.asObservable()
.flatMap(networkRequest)
.asDriver(onErrorRecover: handleError)
.drive(uiComponent)
.disposed(by: disposeBag)

我想要发生的是让 handleError 处理一个可能的错误,然后在再次点击按钮时再次发出请求。这不起作用,因为如果出现错误,我现在订阅了 handleError 返回的 Driver。我唯一的其他想法是将信号保持为 Observable 并在 subscribe 中分别处理错误情况和下一个情况。这也需要 observeOn。我希望有比这更优雅的东西。有人对此用例有替代方法吗?

编辑

我还应该提到一种对我们有用的方法是处理 flatMap 中的错误。

button.rx.tap.asObservable()
.flatMap {
return networkRequest()
.catchError(handleError)
}
.asDriver(onErrorDriveWith: Driver.empty())
.drive(uiComponent)
.disposed(by: disposeBag)

然而,它似乎又没有我想象的那么优雅。

最佳答案

我会用Result类型来包装返回结果和可能出现的错误。

您可以在 networkRequest() 方法中转换为 Result 类型

关于ios - 处理错误但保持订阅原始 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42433862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com