1

我想处理每个请求,如果请求的响应与条件不匹配,则启动一个新请求并获取响应。如何重新启动旧请求

这是我现在的代码

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)
        }
    }
4

1 回答 1

0

您应该继承 MoyaProvider,覆盖请求方法,在那里您可以检查来自 api 的响应,并在需要时重试。

于 2017-10-30T08:24:01.807 回答