2017-10-28 89 views
0

我想要處理每個請求,並且如果請求的響應與條件不匹配,請啓動一個新請求並獲取響應。我怎樣才能重新啓動舊請求如何使用moya重新啓動網絡請求,rxswift

這裏是我現在的代碼

static func request(target: API) -> Observable<Response> { 
     let actualRequest = provider.request(target) 
     return self.provider.request(target).flatMapLatest { (response) -> Observable<Response> in 
      let responseModel = ResponseModel(data:response.data) 

      if responseModel.code == -405 { 
       let refreshToken = User.shared?.refreshToken 
       self.provider.request(.refreshToken(refresh: refreshToken!)).flatMap({ response -> Observable<String> in 
        return Observable.just("") 

       }).shareReplay(1).subscribe(onNext: { refreshToken in 
        // here I get a new token, how to retry the actualRequest , or how to start a new network request with the target 
       }, onError: { (error) in 

       },onCompleted: { _ in 

       }) 

      } 

       return Observable.just(response) 
     } 
    } 
+0

嘗試使用* .switchLatest()*,如此處所述 - https://stackoverflow.com/a/47040856/856588 –

回答

0

你應該繼承MoyaProvider,超越請求方法和那裏你可以檢查從API響應,並在需要時重試。

相關問題