【发布时间】:2020-12-29 17:04:52
【问题描述】:
情况:
我有一个 http 请求,一旦我得到它,我需要发出另一个请求。但是,我提出的第二个请求取决于第一个请求的结果。例如,我的第一个请求要么返回通过,要么返回失败,如果返回通过,我想调用 apiPass,如果失败,我想返回不同的 Observable。
我知道如果我在第一个电话之后只有一个电话,我可以使用类似 mergemap 的东西并编写类似的东西
return this.http.post<{id:string, resPass:boolean}>(this.urlFirst, bodyObject)
.pipe(mergeMap(this.http.get<any>(this.passUrl)));
但我的情况不同——我想使用 resPass 来知道我是否确实应该调用 pass Api,或者我是否应该执行失败逻辑(它也应该返回一个 Observable,只是一个不同的)。如果第一个调用参数通过,我如何在没有不必要订阅的情况下映射到一个 Observable (http.get(this.passUrl)),如果参数失败,如何映射到另一个 (otherObservable)?
在这两种情况下,我的第一次调用都应该返回 http code 200 ,所以这也不是 http 失败的问题。
有什么线索吗?
【问题讨论】:
标签: angular http rxjs rxjs-pipeable-operators