【发布时间】:2020-08-25 10:13:06
【问题描述】:
这是一个简单程序的主干,它使用 StreamController 监听某些输入流并在其自己的流上输出一些其他数据作为响应:
import 'dart:async';
main() async {
var c = StreamController(
onListen: (){},
onPause: (){},
onResume: (){},
onCancel: (){});
print("start");
await for (var data in c.stream) {
print("loop");
}
print("after loop");
}
输出:
$ dart cont.dart
start
$ dart
为什么这段代码在没有执行 print("loop") 和 print("after loop") 的情况下直接在 await for 行退出?
注意:在原始程序中,onListen() 将接收输入流并订阅它。循环实际上一直在工作,直到在输入流上调用 subscription.cancel(),当它也突然退出时,没有任何机会清理。
【问题讨论】:
标签: dart async-await