【问题标题】:Only activate observable if another observable has emitted只有在另一个 observable 发出时才激活 observable
【发布时间】:2020-06-26 02:34:54
【问题描述】:

这是场景:有两个可观察的流(AB)。我只想在A 至少发出一次之后从B 发出。

我尝试了combineLatest,但问题是当AB 发出时发出组合流。我只希望这个流在B 发出时发出,我不需要来自A 的值。我只需要它被发射一次。

这就是我要找的:

---a---a-- A
-b---b---- B
---b-b---- required

【问题讨论】:

    标签: rxjs


    【解决方案1】:

    我认为这应该可行:

    combineLatest(a$.pipe(first()), b$)
      .pipe(
        map(([a, b]) => b)
      )
    

    combineLatest 将在a$b$ 都发出时第一次发出,然后它只会在b$ 发出时发出,因为a$.pipe(first())

    【讨论】:

      【解决方案2】:

      一旦 combine latest 发出,然后切换回 b。

      combineLatest(a$, b$).pipe(
        map(([a, b]) => b),
        switchMap(_ => b$)
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多