Dartlang rxdart - 合并不同类型的流

Dartlang rxdart - merge different type streams

这是我的用例:

我有两个不同的 Observables:

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

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

你要的是combineLatest运算符

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

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

你试过了吗Observable.race?它非常适合通知:

Given two or more source streams, emit all of the items from only the first of these streams to emit an item or notification.

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