代码之家  ›  专栏  ›  技术社区  ›  DiPix

rxjs中基于布尔可观测的条件可观测变换

  •  0
  • DiPix  · 技术社区  · 7 年前

    我如何编辑基于布尔可观测值的可观测值,任何时候该布尔可观测值将被更改 $ships 可观测的将被转换。

    areShipsExpanded$: Observable<boolean>;
    ships$: Observable<Ship>;
    
    this.ships$ = this.shipsDataSource.getData().pipe(
        map(s => {
              if(this.areShipsExpanded$) {
                  // do something with s
              } else {
                  // do something else with s
              }
        return s;
    })
    

    当然在视图上会用到 ships$ | async

    上面的代码是不正确的,因为当 this.areShipsExpanded$ 会改变的。

    1 回复  |  直到 7 年前
        1
  •  2
  •   DiPix    7 年前
    areShipsExpanded$: Observable<boolean>;
    ships$: Observable<Ship>;
    
    this.ships$ = this.shipsDataSource.getData().pipe(
    combineLatest(this.areShipsExpanded$),
    map(([ships, expanded]) => {
          if(expanded) {
              // do something with ships
          } else {
              // do something else with ships
          }
    return ships;
    })
    
    推荐文章