Dart 流中的 listen 和 forEach 有什么区别?

举报
坚果的博客 发表于 2021/12/16 00:09:50 2021/12/16
【摘要】 stream - Dart 流中的 listen 和 forEach 有什么区别? 如果我有 Stream在 Dart 中,我可以同时使用 listen和 forEach ,但我不明白其中的区别。 因...

stream - Dart 流中的 listen 和 forEach 有什么区别?

如果我有 Stream在 Dart 中,我可以同时使用 listenforEach ,但我不明白其中的区别。

因此,例如考虑以下代码:

final process = await Process.start('pub', ['serve']);
process.stdout.map((l) => UTF8.decode(l)).forEach(print);

  
 
  • 1
  • 2

我也可以写:

process.stdout.map((l) => UTF8.decode(l)).listen(print);

  
 
  • 1

有什么区别吗?

最佳答案

forEach Stream 上的函数将在第一个错误处停止,并且不会给您 StreamSubscription控制您在流上收听的方式。使用 forEach如果这是您想要的,那就太好了 - 它会告诉您何时完成(返回的 Future )并且您所要做的就是处理事件。如果您需要更多控制,可以使用 listen打电话是怎么回事forEach被执行。

这就像Iterable.forEach之间的区别和 Iterable.iterator - 前者只是为每个元素调用一个回调,另一个给你一种控制迭代的方法。

文章来源: jianguo.blog.csdn.net,作者:坚果前端の博客,版权归原作者所有,如需转载,请联系作者。

原文链接:jianguo.blog.csdn.net/article/details/106973209

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。