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

简介: 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);

我也可以写:

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

有什么区别吗?


最佳答案


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


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

目录
打赏
0
0
0
0
73
分享
相关文章
js的循环中foreach、for in和for of的区别
js的循环中foreach、for in和for of的区别
226 0
|
9月前
|
java同一个任务使用for循环与Stream比较
java同一个任务使用for循环与Stream比较
JS tostring()和join()方法
JS tostring()和join()方法
61 1
Go 语言为什么建议 append 追加新元素使用原切片变量接收返回值?
Go 语言为什么建议 append 追加新元素使用原切片变量接收返回值?
57 0
|
10月前
|
Java8的stream流中flatMap()方法的作用
Java8的stream流中flatMap()方法的作用
432 10
D. Remove One Element(前缀最大+简单状态机)
D. Remove One Element(前缀最大+简单状态机)
stream实现递归封装
stream实现递归封装
59 1
js中 for、forEach、for...in、for...of循环的区别和使用
js中 for、forEach、for...in、for...of循环的区别和使用
|
10月前
props和state相同点和不同点?render方法在哪些情况下会执行?
props和state相同点和不同点?render方法在哪些情况下会执行?
64 0
Stream方法使用-peek和foreach方法讲解
Stream方法使用-peek和foreach方法讲解
421 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等