如果我Stream在飞镖,我可以同时使用listen和forEach,但我不明白的区别.
例如,考虑以下代码:
final process = await Process.start('pub', ['serve']);
process.stdout.map((l) => UTF8.decode(l)).forEach(print);
Run Code Online (Sandbox Code Playgroud)
我也可以写:
process.stdout.map((l) => UTF8.decode(l)).listen(print);
Run Code Online (Sandbox Code Playgroud)
有什么区别吗?
a上的forEach函数Stream将在第一个错误处停止,并且它不会让您StreamSubscription控制如何监听流.使用forEach是伟大的,如果这就是你想要的东西-它告诉你当它完成(返回Future),所有你需要做的是处理的事件.如果您需要更多控制权,可以使用实施方式的listen呼叫forEach.
这就像之间的差异Iterable.forEach和Iterable.iterator-前者只是调用每个元素的回调,对方给你一个方法来控制迭代.
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |