У меня есть функция, которая должна возвращать 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 для результата.