我正在使用该dart:async
库进行一些数据处理。我正在向 a 添加对象,StreamController
而另一个模块正在监听流。现在我想要,另一个模块将处理结果返回给add
调用(作为未来)。
这是一些示例代码,应该说明我想要做什么(它不起作用,因为 add 方法不返回未来):
final controller = new StreamController();
controller.stream.listen((a) {
// Do something with a, after that return something:
return 42;
});
final aFuture = controller.add(new A());
aFuture.then((result) {
// result == 42
});
是否可以使用dart:async
另一个库,或者我需要编写自己的类?
PS:替代方案如下,但使用简单的返回会“更复杂”:
final controller = new StreamController();
controller.stream.listen((container) {
// Do something with container.a, after that return something:
container.completer.complete(42);
});
final completer = new Completer();
controller.add(new Container(new A(), completer));
completer.future.then((result) {
// result == 42
});