type
status
date
slug
summary
tags
category
icon
password
<ins/>
在 Dart 中,StreamFuture 都是用于处理异步操作的类型,但它们在用途和行为上有明显的区别。简单来说:
  • Future 表示一次性异步操作,在操作完成后会返回单一结果。
  • Stream 表示连续的异步事件序列,可以在不同的时间点返回多个结果。

Future 和 Stream 的关系

FutureStream 的关系可以理解为两种不同的异步模式,它们适用于不同的场景:
  1. 单次 vs. 多次异步事件
      • Future 适用于一次性异步事件,比如 HTTP 请求、数据库查询或文件读取。
      • Stream 适用于多次异步事件,比如文件逐行读取、实时数据流、用户输入事件等。
  1. 结果的数量
      • Future 只返回一个结果(成功或失败)。
      • Stream 可以返回一系列结果,可能是无限的,比如网络数据流或传感器数据。
  1. 用法
      • Future 使用 await 关键字来等待结果。
      • Stream 可以使用 await forlisten 来处理每个事件。

Future 示例

Future 适用于需要等待一个操作完成的场景,比如网络请求或延时操作:

Stream 示例

Stream 适用于处理一系列连续的异步事件,例如监听用户输入或实时数据流:

Future 转为 Stream

在某些情况下,我们可能需要将单次事件的 Future 转换为 Stream,可以通过 Stream.fromFuture 来实现。

总结

  • Future:单次异步操作,返回一个值或错误。
  • Stream:多次异步操作的序列,适合连续事件流。
 
<ins/>