type
status
date
slug
summary
tags
category
icon
password
<ins/>
在 Dart 中,
Stream
和 Future
都是用于处理异步操作的类型,但它们在用途和行为上有明显的区别。简单来说:Future
表示一次性异步操作,在操作完成后会返回单一结果。
Stream
表示连续的异步事件序列,可以在不同的时间点返回多个结果。
Future 和 Stream 的关系
Future
和 Stream
的关系可以理解为两种不同的异步模式,它们适用于不同的场景:- 单次 vs. 多次异步事件
Future
适用于一次性异步事件,比如 HTTP 请求、数据库查询或文件读取。Stream
适用于多次异步事件,比如文件逐行读取、实时数据流、用户输入事件等。
- 结果的数量
Future
只返回一个结果(成功或失败)。Stream
可以返回一系列结果,可能是无限的,比如网络数据流或传感器数据。
- 用法
Future
使用await
关键字来等待结果。Stream
可以使用await for
或listen
来处理每个事件。
Future
示例
Future
适用于需要等待一个操作完成的场景,比如网络请求或延时操作:Stream
示例
Stream
适用于处理一系列连续的异步事件,例如监听用户输入或实时数据流:将 Future
转为 Stream
在某些情况下,我们可能需要将单次事件的
Future
转换为 Stream
,可以通过 Stream.fromFuture
来实现。总结
Future
:单次异步操作,返回一个值或错误。
Stream
:多次异步操作的序列,适合连续事件流。
<ins/>