2

这是我的用例:

我有两个不同的Observables

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

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

4

2 回答 2

5

你想要的是combineLatest运营商

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

final output = Observable.combineLatest2(foo, bar, (Foo foo, Bar bar) {
  // TODO: somehow merge them
});
于 2019-03-21T17:21:16.190 回答
2

你试过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

于 2019-08-10T03:08:33.780 回答