【问题标题】:RxJS5 - skipWhile but keep values while skipping?RxJS5 - skipWhile 但在跳过时保留值?
【发布时间】:2017-06-09 20:18:18
【问题描述】:

当 bool 为真时,我有一个需要跳过的流。

但是,当该布尔值设置回 false 时,我需要应用在跳过时错过的最后一个流值。

Rx.Observable
.interval(1000)
.skipWhile(val => true|false)<---when back to false, get last missed value?
.subscribe(val => console.log(val)); 

【问题讨论】:

  • val是区间运算符返回的还是外部值?
  • 感谢您的回复。从区间返回。
  • 那么你的状态会是怎样的呢?你想达到什么目的?
  • 你需要举个恰当的例子,对我来说还不清楚

标签: rxjs5


【解决方案1】:

使用多播来共享 start 和 rest 值。 pairwise to pairt prev and next value 和 concat 组合 start 和 rest。

 Rx.Observable.interval(500)
   .multicast(new Rx.Subject(), shared => {
      let start$ = shared
                  .pairwise()
                  .skipWhile((x)=>x[1]<5) // this is the condition to skip
                  .first()         
                  .switchMap(el=>Rx.Observable.concat(Rx.Observable.of(el[0]), 
                                 Rx.Observable.of(el[1])));
      return Rx.Observable.concat(start$, shared);
}).subscribe(x=>console.log(x));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多