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 - 前者只是为每个元素调用一个回调,另一个给你一种控制迭代的方法。

相关文章
|
3月前
|
分布式计算 JavaScript 前端开发
JS中数组22种常用API总结,slice、splice、map、reduce、shift、filter、indexOf......
JS中数组22种常用API总结,slice、splice、map、reduce、shift、filter、indexOf......
|
1月前
|
JavaScript API
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
39 1
|
2月前
|
Java
java同一个任务使用for循环与Stream比较
java同一个任务使用for循环与Stream比较
26 1
|
2月前
|
JavaScript 前端开发
JavaScript 数组的函数 map/forEach/reduce/filter
JavaScript 数组的函数 map/forEach/reduce/filter
|
3月前
|
Java
Java8的stream流中flatMap()方法的作用
Java8的stream流中flatMap()方法的作用
156 10
|
3月前
|
Java API
java 对象list 使用stream进行过滤
在Java中,你可以使用Stream API对对象列表进行过滤。假设你有一个`List<MyObject>`,并且你想根据某些条件过滤出特定的对象。以下是一个示例: ```java import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<MyObject> myObjects = ... // 初始化你的对象列表 List<MyObject> filter
257 1
|
10月前
|
Java
【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
230 0
|
12月前
|
JavaScript 前端开发
JavaScript中的this指向,call、apply、bind的简单实现
JavaScript中的this指向,call、apply、bind的简单实现
50 0
Collection.stream()forEach()和Collection.forEach()有什么区别?
Collection.stream()forEach()和Collection.forEach()有什么区别?
|
Java
List Stream 的常规用法
List Stream 的常规用法
103 0