异步编程之 Streams

Posted 熊喵先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步编程之 Streams相关的知识,希望对你有一定的参考价值。

继续 Dart 异步系列的第四篇 Stream,Stream 是构成了 Dart 响应式流编程重要组成部分。相比上篇文章中的 Future,每个 Future 代表单一的值,可以异步传送数据或异常。而 Stream 的异步工作方式和 Future 类似,只是 Stream 代表的是一系列的事件,那么就可能传递任意数据值,可能是多个值也可以是异常。比如从磁盘中读取一个文件,那么这里返回的就是一个 Stream。此外 Stream 是基于事件流订阅的机制来运转工作的。

1. 为什么需要 Stream

首先,在 Dart 单线程模型中,要实现异步就需要借助类似 Stream、Future 之类的 API 实现。所以 Stream 可以很好地实现 Dart 的异步编程。

此外,在 Dart 中一些异步场景中,比如磁盘文件、数据库读取等类似需要读取一系列的数据时,这种场景 Future 是不太合适的,所以在一些需要实现一系列异步事件时 Stream 就是不错的选择,Stream 提供一系列异步的数据序列。换个角度理解 Stream 就是一系列的 Future 组合,Future 只能有一个异步响应,而 Stream 就是一系列的异步响应。

//Futures 实现
void main() 
  Future.delayed(Duration(seconds: 1), () => print(\'future value is: 1\'));

输出结果:

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于异步编程之 Streams的主要内容,如果未能解决你的问题,请参考以下文章

一篇入门reactive streams背压响应流编程

一篇入门reactive streams背压响应流编程

一篇入门reactive streams背压响应流编程

一篇入门reactive streams背压响应流编程

JVM平台上的响应式流(Reactive Streams)规范

使用 Fetch Streams API 异步消费分块数据而不使用递归