当某些可观察到的发射数据rxjs时取消可观察的

时间:2018-10-02 09:38:46

标签: typescript rxjs observable reactive-programming rxjs5

我有三个数据源:

let insightsFromDB$;// Return observable of insight object
let insightsFromAPI$;// Return observable of insight object
let insightsFromWebsockets; // Return observable of insight object
     otherObservable$
       .merge(insightsFromDB$, insightsFromAPI$) // Return observable of insight object 
      .map(insight=>insight.likes)

我想将insightsFromWebsockets$添加到otherObservable$中,使得如果它发出一个值,它将取消来自合并运算符的洞察力对象并发出来自{{1 }}转换为地图运算符。

为了更加清晰,我添加了以下大理石图,总结了我的代码: enter image description here

1 个答案:

答案 0 :(得分:2)

因此,如果我正确理解您的要求:

  • 您要从流xzmerge)接收值
  • 一旦z使您不再对xtakeUntil)的值感兴趣

示例实现:

    var x = Rx.Observable.interval(300);
    var y = Rx.Observable.timer(1500, 500).mapTo('y');
    
    x.takeUntil(y)
      .merge(y)
      .take(8).subscribe(console.log)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.12/Rx.js"></script>