Dartlang rxdart-合并不同类型的流

时间:2019-03-21 17:18:16

标签: dart flutter rxdart

这是我的用例:

我有两个不同的Observables

Observable<MobileAdEvent> adEventStream;
Observable<Color> colorStream;

当这两个中的一个发出事件时,我需要接收通知。 zipWith对我不起作用,因为它一直等到两个流都有要发送的事件。 mergeWith似乎也不起作用,因为它期望两个流都来自同一类型。 任何提示将不胜感激, 谢谢。

2 个答案:

答案 0 :(得分:1)

您尝试过Observable.race吗?完美的通知:

  

给出两个或多个源流,仅从这些流中的第一个流中发出所有项目,以发出项目或通知。

new Observable.race([
  new Observable.timer(1, new Duration(days: 1)),
  new Observable.timer(2, new Duration(days: 2)),
  new Observable.timer(3, new Duration(seconds: 1))
]).listen(print); // prints 3

在此处https://pub.dev/documentation/rxdart/latest/rx/Observable/Observable.race.html

了解更多信息

答案 1 :(得分:0)

您想要的是combineLatest运算符

Observable<Foo> foo;
Observable<Bar> bar;

final output = Observable.combineLatest2(foo, bar, (Foo foo, Bar bar) {
  // TODO: somehow merge them
});
相关问题