我正在使用带有Rxswift的Moya和Moya-ObjectMapper发出网络请求。
我的网络请求如下。
let provider = RxMoyaProvider<APIClient>()
requestHospitalButton.rx_tap
.withLatestFrom(hospitalCode)
.flatMapLatest { [unowned self] code in
self.provider.request(.Hospital(code: code))
}
.mapObject(Hospital)
.subscribe { [unowned self] event in
switch event {
case .Next(let hospital):
// success
case .Error(let error):
// error
default: break
}
}
.addDisposableTo(rx_disposeBag)如果出现此错误,我的医院请求Observable将终止,并且我再也不能发出我的医院请求。
当requestHospitalButton被点击时,如何重试我的医院请求?
发布于 2016-09-05 17:57:32
您应该使用文档记录的here中的retryWhen
extension ObservableType {
/**
Repeats the source observable sequence on error when the notifier emits a next value.
If the source observable errors and the notifier completes, it will complete the source sequence.
- seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)
- parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.
- returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.
*/
public func retryWhen<TriggerObservable: ObservableType>(_ notificationHandler: @escaping (Observable<Swift.Error>) -> TriggerObservable)
-> Observable<E> {
return RetryWhenSequence(sources: InfiniteSequence(repeatedValue: self.asObservable()), notificationHandler: notificationHandler)
}
}https://stackoverflow.com/questions/39327800
复制相似问题