swift - RxAlamofire 请求在我第二次调用该函数时没有被触发
问题描述
我有一个应该返回 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。
解决方案
当我调用它时,它看起来像这样:
result = someObservable.flatMapLatest { return ScrapingService.request2(credentials: $0) }
你不是在这里“调用”可观察的。你只是在创造它。为了从 Observable 获取结果,您必须订阅它。
推荐阅读
- spring - 如何在 gradle 中获取依赖项的元数据?
- sql - SSIS 将非列式数据导入 SQL
- apache-spark - PySpark:结合聚合和窗口函数
- flutter - Flutter:可以将 CupertinoPicker 中的项目定位在两条线之间的中心吗?
- c# - Unity - 使用旧坐标和它们之间的线长获取新坐标
- active-directory - 无 Office 计划且具有 PowerBI 许可证的未许可用户
- python - 进程变成僵尸 - Python3 多处理
- c# - 如何打印不是对象 IEnumerable 的值
()>() - html - 这个在 VueJS 中不起作用的 Click 事件有什么问题吗?
- powerquery - PowerQuery 表转换