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
这是我的用例:
我有两个不同的 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