合并主题和可观察对象,等待对象发出一个值,然后发出可观察对象

时间:2019-11-26 17:57:37

标签: angular typescript rxjs

我有一个主题并且是可观察的,我想将它们组合起来并发出可观察的值,并在主题获得新值后对其进行一些处理。 下面的这段代码很好用,但我不想在订阅中订阅

this.subject.subscribe(() => {
    this.observable.subscribe(b => {
      this.someStuffToDo(b);
    });

因此,工作流程为: 接下来在主题上调用->可观察的是发出值->使用此值做一些事情。 我已经尝试过CombineLatest和zip,但是它在主题的第一次发出时停止,或者顺序错误。

1 个答案:

答案 0 :(得分:2)

如果您使用的是RxJS 6,则可以考虑使用switchMap之类的pipeable operatorsswitchMap将允许您将可观察值映射到内部可观察值,而无需嵌套订阅。

this.subject
  .pipe(
    switchMap(() => this.observable),
  ).subscribe((b) => {
    this.someStuffToDo(b);
  });

然后在next()上调用subject将更新其值。

this.subject.next(value);
相关问题