我有一个函数,它应该返回一个可以观察到的。当我第一次调用该函数时,一切都很好,我收到了预期的结果,但是第二次,我想用不同的参数发出相同的请求,函数会自动返回与以前相同的响应,它根本不会触发请求。有多个嵌套的请求,因为每个新请求取决于前面的结果。
看起来是这样的:
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。
发布于 2019-03-18 12:25:15
当我称之为它时,它看起来是这样的:
result = someObservable.flatMapLatest { return ScrapingService.request2(credentials: $0) }你不是在“打电话给”可观察到的人。你只是在创造它。为了从一个可观察到的方面获得结果,你必须订阅它。
https://stackoverflow.com/questions/55209838
复制相似问题