使用 Angular/RXJS 一个接一个地发送两个 HTTP 请求,其中第二个请求需要第一个?

Win*_*hao 3 rxjs angular-http angular

目前我的代码是通过在彼此内部嵌套 observables 来实现的...

makeRequest() {
  return this.http.get().map((response: Response) => {
    return this.http.get(response.doSomething());
  }
}
Run Code Online (Sandbox Code Playgroud)

当我需要使用它时,我也使用嵌套订阅它们......

我很确定这不是正确的方法,现在我需要一种方法来做一些事情:

-> 发出请求 -> 检查回复 -> 如果回复表明令牌已过期 -> 获取新令牌并再次执行请求 -> 否则将结果传递

实现这一目标的推荐方法是什么?

非常感谢,

Fan*_*ung 5

使用 flatMap 或 switchMap 并有条件地返回不同的 Observable

auth() {
  return this.http.get().flatMap((response: Response) => {
  if (token not expire....) {
  // pass on the response
    return Observable.of(response)
  }
    return this.http.get(response.getToken()).mapTo(Observable.throw('Retry'));
  }).retry()
}
Run Code Online (Sandbox Code Playgroud)