这是我的用例:
我有两个不同的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
吗?它非常适合通知:
给定两个或多个源流,仅从这些流中的第一个发出所有项目以发出项目或通知。
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