Я использую библиотеку dart:async
, чтобы выполнить некоторую обработку данных. Я добавляю объекты к StreamController
, а другой модуль прослушивает поток. Теперь я хочу, чтобы другой модуль возвращал результат обработки обратно на вызов 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
});
, который похож на второй, как я думал об этом, но нет t, что я ищу ... – Fox32