代码之家  ›  专栏  ›  技术社区  ›  Steven Liekens

当源可观测物发射但仅使用最新值时,如何切换到另一个可观测物

  •  6
  • Steven Liekens  · 技术社区  · 9 年前

    • load$
    • selection$ 是选定列表项的流,在选定列表项时发出

    我想知道是否有一个运算符可以让我(A)获得 无论何时 负荷$ .

    withLatestFrom 但这并不满足(B),因为 不忽略可观察的源。

    load$.withLatestFrom(selection$).subscribe(([_, latestSelection) => {
      // _ is not needed and I don't like to write code like this
      // I only need the latest selection
    });
    

    我已经看过了 switchMapTo 满足(B),但不满足(A),且不使用 first() 或 take(1)

    load$.switchMapTo(selection$.take(1)).subscribe(latestSelection => {
      // I would like to avoid having to use take(1)
    });
    

    我在找一个假设 switchMapToLatestFrom 操作人员

    load$.switchMapToLatestFrom(selection$).subscribe(latestSelection => {
      // switchMapToLatestFrom doesn't exist :(
    });
    

    取(1)

    有没有其他方法可以组合两个可观察对象,使新的可观察对象在第一个可观察对象发出时仅发出第二个可观察对象的最新值?

    2 回复  |  直到 9 年前
        1
  •  11
  •   cartant    9 年前

    withLatestFrom 采取可选措施 project

    您可以使用它忽略 load$ 并仅发射最新选择:

    load$
      .withLatestFrom(selection$, (load, selection) => selection)
      .subscribe(selection => {
        // ...
      });
    
        2
  •  2
  •   Bosco Mike Wertman    7 年前

    就您而言:

    selection$.pipe(sample(load$)).subscribe(
       // the code you want to run
    )