Dart 流中的 listen 和 forEach 有什么区别?
Posted Lucklyの博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart 流中的 listen 和 forEach 有什么区别?相关的知识,希望对你有一定的参考价值。
stream - Dart 流中的 listen 和 forEach 有什么区别?
如果我有 Stream
在 Dart 中,我可以同时使用 listen
和 forEach
,但我不明白其中的区别。
因此,例如考虑以下代码:
final process = await Process.start('pub', ['serve']);
process.stdout.map((l) => UTF8.decode(l)).forEach(print);
我也可以写:
process.stdout.map((l) => UTF8.decode(l)).listen(print);
有什么区别吗?
最佳答案
forEach
Stream
上的函数将在第一个错误处停止,并且不会给您 StreamSubscription
控制您在流上收听的方式。使用 forEach
如果这是您想要的,那就太好了 - 它会告诉您何时完成(返回的 Future
)并且您所要做的就是处理事件。如果您需要更多控制,可以使用 listen
打电话是怎么回事forEach
被执行。
这就像Iterable.forEach
之间的区别和 Iterable.iterator
- 前者只是为每个元素调用一个回调,另一个给你一种控制迭代的方法。
以上是关于Dart 流中的 listen 和 forEach 有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章
如何比较流中的每个事件,streamController dart
关于java stream流中的peek方法和foreach的自我理解: