RXJS 嵌套依赖订阅

RXJS Nested dependant subscriptions

我正在尝试使用 Observables。但我在挣扎。我已经用谷歌搜索了一段时间,但我无法真正确定我看到的示例是否符合我的要求。

我会试着解释一下,也许有人可以向我解释一下。

我有这个 http 端点,我 post 一个 JSON 对象。后端存储它,returns 持久对象,带有一个 id。然后根据我在这里得到的响应,我需要通过调用第二个 http 端点来更新对象。

假设 service1 是 post 或创建对象,service2 用于更新它。然后我会执行以下操作:

service1.create(theNewObject).subscribe(response => {
   service2.update(response).subscribe(secondResponse => { console.log(secondResponse) })
})

我很确定这会做我想做的事情,但我在某处读到,在另一个订阅中进行订阅并不是这样做的方法。

所以我的问题是..如果我不能这样做,该怎么办?

这让我难以理解..

提前致谢!

您使用所谓的高阶运算符:

import {switchMap} from 'rxjs/operators'; // import the operator

service1.create(theNewObject).pipe(
  switchMap(response => service2.update(response))
).subscribe(secondResponse => { console.log(secondResponse) })

高阶运算符通常涉及外部和内部可观察量。他们将从外部可观察对象(在本例中为创建)接收值并订阅返回的内部可观察对象(在本例中为更新)并输出内部的值。

其中有许多使用案例/行为略有不同,但 switchMap 是最常见的。在处理单一发射可观察对象(如 http 调用)时,它们的行为都相同。

嵌套订阅通常被认为是 rxjs 中的反模式,应该避免,因为它们会使正确管理订阅变得困难或混乱,这在您深入了解 rxjs 时很重要。不存在需要嵌套订阅或高阶运算符无法处理的用例。