如何避免来自链式 angular 订阅的 HTTP 调用

How to avoid HTTP call from chained angular subscription

我有一种情况,我调用 HTTP 服务来取回数据,然后根据该数据我需要立即进行另一个 HTTP 调用。通常我会 pipe 第一个输出到 switchMap 并完成。现在这是从路由订阅内部完成的,所以我不知道如何摆脱内部调用。

this.route.queryParamMap
  .pipe(switchMap(params => someService.get(params))
  .subscribe(x => {
    // do other things with x

    someService.getOtherThing(x.id).subscribe(...)
  })

get(params) 调用完成之前,我无法调用 getOtherThing(x.id)。我如何避免从订阅中调用该服务?

this.route.queryParamMap.pipe(
  switchMap(params => someService.get(params)),
  concatMap((x) => {
    // do other things with x
    return someService.getOtherThing(x.id)
  })
).subscribe((response) => console.log('Your response'));

concatMap会等待someService.get(params)完成才能触发someService.getOtherThing(x.id)