gpt4 book ai didi

ios - 如何链接 Observables 并为错误处理创建一个公共(public)位置

转载 作者:行者123 更新时间:2023-11-28 09:36:58 25 4
gpt4 key购买 nike

我想知道如何以更优雅的方式编写我的代码...我有两个请求,第二个请求必须等待第一个请求。如果第一个失败,整个句子应该失败,我想知道如何在一个常见的地方捕获错误?

    enum TestError: ErrorType {
case Connection
}

private func runTest() {
rx_firstReq()
.subscribeNext() { _ in
return self.rx_secondReq()
.subscribeNext() { _ in
print("whole req sequence finished with success!")
}.addDisposableTo(self.myDisposeBag)
}.addDisposableTo(myDisposeBag)
}

func rx_firstReq() -> Observable<Bool> {
return Observable.create() { observable -> Disposable in
observable.onError(TestError.Connection) // We are assuming that first req gets failed
observable.onCompleted()

return NopDisposable.instance
}
}

func rx_secondReq() -> Observable<Bool> {
return Observable.create() { observable -> Disposable in
observable.onNext(true)
observable.onCompleted()

return NopDisposable.instance
}
}

如您所见,没有任何地方可以进行错误处理...我不知道如何对其进行建模,此时我链中的每个下一个请求都会创建下一个缩进级别...在我看来这并不好RxSwift 的使用...😕

..一些提示或与示例代码的链接以及在常见位置处理错误对我来说非常有用。

最佳答案

永远不要在另一个 subscribe 中使用一个 subscribe ! :)
对于您的问题,flatMap 是解决方案。

rx_firstReq()
.flatMap { _ -> Observable<Bool> in
rx_secondReq()
}
.subscribe(next, error ...)
.disposed(by: bag)

瞧 :)

关于ios - 如何链接 Observables 并为错误处理创建一个公共(public)位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434108/

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