我正在尝试创建以下流baz,其中包含一个“外部”流,其中该流的每个事件也有一个“内部”流。
对于外部流中的每个事件 X,X 的内部流中的所有事件都应添加到baz。
class Foo {\n final StreamController<int> bar = StreamController();\n\n Foo() {\n getsAnOuterStream.listen((event) {\n bar.addStream(getsAnInnerStream(event));\n });\n }\n\n Stream<int> get baz => bar.stream;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n上面的代码按预期工作。然而,我知道我可以通过使用该asyncExpand 方法来简单地实现这一点。
class Foo {\n final Stream<int> baz = getsAnOuterStream\n .asyncExpand((event) => getsAnInnerStream(event));\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当外部流更改时,这不起作用 \xe2\x80\x93,新的内部流事件不会添加到baz. 我在这里缺少什么微妙之处吗?任何帮助深表感谢!
只是要注意...我认为问题可能与此有关:如果内部流永远持续下去,则baz永远不会继续处理下一个内部流中的事件。但是,如果这是问题所在,为什么顶级解决方案有效?
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |