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/>