Я пытаюсь создать следующий поток baz
, который состоит из "внешнего" потока, где каждое из событий этого потока также имеет "внутренний" поток.
Для каждого события X во внешнем потоке все события во внутреннем потоке для X должны быть добавлены к baz
.
class Foo {
final StreamController<int> bar = StreamController();
Foo() {
getsAnOuterStream.listen((event) {
bar.addStream(getsAnInnerStream(event));
});
}
Stream<int> get baz => bar.stream;
}
Приведенный выше код работает как задумано. Однако я понял, что могу просто добиться этого, используя вместо этого asyncExpand
метод .
class Foo {
final Stream<int> baz = getsAnOuterStream
.asyncExpand((event) => getsAnInnerStream(event));
}
Это не работает - при изменении внешнего потока события нового внутреннего потока не добавляются в baz
. Есть ли какая-то тонкость, которую я здесь скучаю? Любая помощь очень ценится!
Просто чтобы отметить ... Я думаю, что проблема может быть связана с этим: если внутренний поток продолжается вечно, baz
никогда не перейдет к событиям из следующего внутреннего потока. Однако, если это проблема, почему работает верхнее решение?