【问题标题】:Canceling observable when certain observable emit data rxjs当某些 observable 发出数据 rxjs 时取消 observable
【发布时间】:2019-03-07 10:17:51
【问题描述】:

我有三个数据来源:

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$,这样如果它发出一个值,它会取消来自合并运算符的洞察对象并将来自insightsFromWebsockets$ 的对象发出给映射运算符.

为了更清楚起见,我添加了以下总结我的代码的大理石图:

【问题讨论】:

  • 您能否提供一个minimal reproducible example?另外,请阅读How to Ask
  • @Enigmativity 好的,我正在阅读它,问题中缺少什么?
  • 你的代码能编译吗?我可以复制、粘贴和运行它吗?

标签: typescript rxjs observable reactive-programming rxjs5


【解决方案1】:

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

  • 您想从流 xz (merge) 接收值
  • 一旦z 发出,您就不再对x (takeUntil) 的值感兴趣

示例实现:

    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>

【讨论】:

  • @Jasem Al-Yafie - xmerge(insightsFromDB$, insightsFromAPI$)yinsightsFromWebsockets
  • 谢谢,很有道理:)
猜你喜欢
  • 2016-11-28
  • 2020-08-11
  • 2016-07-07
  • 2021-02-20
  • 1970-01-01
  • 2016-12-20
  • 2017-12-17
  • 2021-12-03
  • 1970-01-01
相关资源
最近更新 更多