«Добавить события» в существующие потоки в Dart - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть поток A, который выводится из потока Websocket (после преобразования, ...)

  • Существует ли API для "добавления событий / данных" в мой поток A?

  • Если это невозможно сделать напрямую, нужно ли мне создавать собственный поток B с моими пользовательскими событиями и объединять A + B в новый поток C? Я тоже не знаю, как это сделать (бит объединения).

Ниже приведено то, что я тестировал до сих пор, похоже, что оно работает, но я новичок в Dart, и это выглядит излишне:

Stream<int> countStream(int from, int to) async* {
  for (int i = from; i <= to; i++) {
    yield i;
  }
}

main() async {
  var stream = countStream(0, 30);

  final multiStream = StreamSplitter(stream);
  var even1 = multiStream.split().where((i) => i.isEven);
  var odd1 = multiStream.split().where((i) => i.isOdd);
  var other = multiStream.split().where((i) => i % 3 == 0);
  multiStream.close();

/*
What I just want to do at the end :
other.listen((i) => add $i to odd1 or even1 after complex transformation);
*/

  var other2 = other.map((n) => -n);

  final multiStream2 = StreamSplitter(other2);
  var even2 = multiStream2.split().where((i) => i.isEven);
  var odd2 = multiStream2.split().where((i) => i.isOdd);
  multiStream2.close();

  var even = StreamGroup.merge([even1, even2]);
  var odd = StreamGroup.merge([odd1, odd2]);

  even.listen((i) => print("even $i"));
  odd.listen((i) => print("odd $i"));


}
...