我第二次调用该函数时,不会触发RxAlamofire请求

问题描述 投票:0回答:1

我有一个函数应该返回一个Observable。当我第一次调用该函数时,一切都很顺利,我收到了我期望的结果,但是第二次我想用不同的参数发出相同的请求,该函数会自动返回与之前相同的响应,但它没有完全解雇请求。嵌套有多个请求,因为每个新请求都取决于前一个的结果。

它看起来像这样:

func request1() -> Observable<String> {
    return RxAlamofire
            .requestString(.get, url)
            .map { (response, html) -> Result<String> in
                .....
                return newUrl
            }
}

private func request2(credentials: Credentials) -> Observable<String> {
   return request1()
            .flatMapLatest { (newUrl)

                return RxAlamofire
                    .requestString(.get, newUrl)
                    .flatMapLatest { (response, _) -> Observable<String> in

                        let params = ["username": credentials.username, "password": credentials.password]

                        return RxAlamofire
                            .requestString(.post, (response.url?.absoluteString)!, parameters: params)
                            .flatMapLatest { (response2,str) -> Observable<String> in

                                ... some code formating ...

                                return RxAlamofire
                                    .requestString(.post, actionUrl!, parameters: anotherParameters)
                                    .map { return result }
                        }
                }
        }
    }

当我打电话给它时,它看起来像这样:

result = someObservable.flatMapLatest { return ScrapingService.request2(credentials: $0) }

当我触发“someObservable”时,它会按预期运行request2,但不会发出实际请求。

最后我在onNext上做了结果。

swift networking rx-swift reactive rxalamofire
1个回答
0
投票

当我打电话给它时,它看起来像这样:

result = someObservable.flatMapLatest { return ScrapingService.request2(credentials: $0) }

你不是在这里“召唤”观察者。你只是在创造它。要从Observable获取结果,您必须订阅它。

© www.soinside.com 2019 - 2024. All rights reserved.