RxAlamofire 请求没有第二次触发我调用函数
RxAlamofire request is not fired for the second time i call the function
我有一个函数应该 return 一个 Observable。当我第一次调用该函数时,一切正常,我收到了我预期的结果,但是第二次我想用不同的参数发出相同的请求时,该函数会自动 returns 相同的响应之前,它根本不会触发请求。嵌套了多个请求,因为每个新的请求都依赖于前一个的结果。
看起来像这样:
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: [=11=]) }
当我触发 "someObservable" 时,它会按预期运行请求 2,但实际请求并未发出。
最后我对结果做了onNext。
when I am calling it it looks something like this :
result = someObservable.flatMapLatest { return ScrapingService.request2(credentials: [=10=]) }
你不是"calling"这里的可观察者。你只是在创造它。为了从 Observable 获得结果,您必须订阅它。
我有一个函数应该 return 一个 Observable。当我第一次调用该函数时,一切正常,我收到了我预期的结果,但是第二次我想用不同的参数发出相同的请求时,该函数会自动 returns 相同的响应之前,它根本不会触发请求。嵌套了多个请求,因为每个新的请求都依赖于前一个的结果。
看起来像这样:
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: [=11=]) }
当我触发 "someObservable" 时,它会按预期运行请求 2,但实际请求并未发出。
最后我对结果做了onNext。
when I am calling it it looks something like this :
result = someObservable.flatMapLatest { return ScrapingService.request2(credentials: [=10=]) }
你不是"calling"这里的可观察者。你只是在创造它。为了从 Observable 获得结果,您必须订阅它。