代码之家  ›  专栏  ›  技术社区  ›  Eliya Cohen

RXJS-当提供的表达式为真时完成观察

  •  1
  • Eliya Cohen  · 技术社区  · 6 年前

    我正在寻找一个可以过滤我的可观测数据的现有操作员,如果是真的,可观测数据将完成。

    我可以这样做:

    obs$.pipe(
      filter(value => value),
      first()
    );
    

    但是我想知道是否有一种方法可以结合 filter first 操作员在一起。

    我想 skipUntil 是个不错的选择,但它会跳到 可观察的 发出,直到传递真值。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Eliya Cohen    6 年前

    看起来我必须更加注意 docs 属于 first 这正是我想要的。

    // RxJS v6+
    import { from } from 'rxjs';
    import { first } from 'rxjs/operators';
    
    const source = from([1, 2, 3, 4, 5]);
    
    //emit first item to pass test
    const example = source.pipe(first(num => num === 5));
    
    //output: "First to pass test: 5"
    const subscribe = example.subscribe(val =>
      console.log(`First to pass test: ${val}`)
    );
    
        2
  •  0
  •   JJWesterkamp    6 年前

    使用 takeWhile 操作员:

    const $observableThatCompletes = obs$.takeWhile((value) => true !== value);
    

    由此产生的可观测数据将尽快完成 value true .

    你可以使用 !value 而不是 true !== value 如果你想匹配所有“真实”的价值观。