Dartlang rxdart - 合并不同类型的流

Ang*_*rov 2 dart flutter rxdart

这是我的用例:

我有两个不同的Observables

Observable<MobileAdEvent> adEventStream;
Observable<Color> colorStream;
Run Code Online (Sandbox Code Playgroud)

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

Rém*_*let 5

你想要的是combineLatest运营商

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

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

  • `zipWith` 不行。仅当所有流提交某些内容后才会调用组合器。`combineLatest` 组合每个事件后的值(只要有初始值)。所以 `combineLatest` 更接近于 `merge` (2认同)