博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Dart] Capture and Handle Data Sequences with Streams in Dart
阅读量:4983 次
发布时间:2019-06-12

本文共 2328 字,大约阅读时间需要 7 分钟。

Streams represent a sequence of asynchronous events. Each event is either a data event, also called an element of the stream, or an error event, which is a notification that something has failed. When a stream has emitted all its events, a single "done" event will notify the listener that the end has been reached. In this lesson, we will learn how we can capture and handle streaming data, working with various Stream classes.

// Single Stream  StreamController
controller = StreamController
(); // Setup listener controller.stream.listen( (data) => print('Received data: ${data.toUpperCase()}'), onDone: () => print('done'), onError: (e) => print('error $e') ); // Emit event controller.add('Hello'); controller.add('World'); // trigger error controller.addError('Throwing this error'); // trigger done await controller.close(); print('after done, return future, clean up');

 

// Broadcast Stream  StreamController
controller2 = StreamController
(); Stream
boradcast = controller2.stream.asBroadcastStream(); boradcast.listen((data) => print('Received data: $data')); boradcast.listen((data) => print('Received data again: $data')); controller2.add('Hello1'); controller2.add('World2');

 

// Future-based streams  Future
result = HttpRequest.getString('https://swapi.co/api/people/1'); Stream
resultStream = Stream.fromFuture(result); resultStream.listen( (data) => print('Got data: $data'), onError: (e) => print(e.type), onDone: () => print('No more data on stream.') ); // Future-based multi streams Future
result2 = HttpRequest.getString('https://swapi.co/api/people/2'); Stream
peopleStream = Stream.fromFutures([result, result2]); peopleStream.listen( (person) => print('=> Got person: $person'), onDone: () => print('No more people on stream.') );

 

// Typeahead  List
chars = 'Dart is awesome'.split(''); Stream
charStream = Stream.fromIterable(chars); var idx = 0; charStream.listen((char) { Timer(Duration(milliseconds: idx * 200), () => print(char)); idx++; });

 

转载于:https://www.cnblogs.com/Answer1215/p/11454287.html

你可能感兴趣的文章
缓冲区溢出漏洞实验
查看>>
失业的程序员(十):分歧的产生
查看>>
[FZU2261]浪里个浪
查看>>
四则运算*2
查看>>
《Linux就该这么学》 - 必读的红帽系统与红帽linux认证自学手册
查看>>
名句名篇
查看>>
图像的基本运算——scale, rotation, translation
查看>>
OpenCV——PS滤镜, 碎片特效
查看>>
python-字典相关函数认识
查看>>
Java之IO流
查看>>
Lua学习笔记-C API
查看>>
浅析:Android 嵌套滑动机制(NestedScrolling)
查看>>
Python+Selenium练习篇之18-获取元素上面的文字
查看>>
php状态模式
查看>>
Asp.net C# 图像处理
查看>>
知识签名(signature of knowledge)
查看>>
Gedit 解决中文显示乱码问题
查看>>
reset 单个文件 回退
查看>>
数据库系统
查看>>
ASP.NET Core 基础知识(九)Configuration
查看>>