Метод asStream
Метод asStream класса Future создает и возвращает поток Stream, который будет содержать результат выполнения исходного Future. Если исходный Future завершится успешно, поток испустит одно значение с результатом и закроется. Если же Future завершится с ошибкой, поток испустит событие ошибки. Метод не принимает параметров.
Синтаксис
future.asStream()
Пример
Давайте создадим Future, который возвращает строку, и преобразуем его в поток с помощью метода asStream. Затем подпишемся на этот поток и выведем полученные данные:
void main()
{
Future<String> future = Future.value('abcde');
Stream<String> stream = future.asStream();
stream.listen((value) {
print(value);
});
}
Результат выполнения кода:
"abcde"
Пример
Давайте рассмотрим пример, где исходный Future завершается с ошибкой. В этом случае поток также сгенерирует ошибку, которую можно обработать в методе listen:
void main()
{
Future<int> future = Future.error('Error occurred');
Stream<int> stream = future.asStream();
stream.listen(
(value) => print(value),
onError: (error) => print(error)
);
}
Результат выполнения кода:
"Error occurred"
Смотрите также
-
класс
Future,
который представляет результат асинхронной операции -
метод
then,
который позволяет обработать успешный результат -
метод
catchError,
который позволяет обработать ошибку -
метод
whenComplete,
который выполняет код после завершения Future