Flutter Async 与 Async*

在 Flutter(以及 Flutter 使用的语言 Dart)中,asyncasync*都用于处理异步操作,但它们的用途和使用环境不同。以下是它们之间的区别:

async

  • 目的 :用于定义返回Future的异步函数。
  • 行为async函数异步执行,最终返回单个值(或错误)。你可以在函数内部使用 await 来等待其他异步操作完成。
  • 返回类型 :隐式返回一个Future<T>,其中T是函数返回值的类型。
  • 用例:适用于产生单一结果的一次性操作,例如从 API 获取数据或读取文件。

异步示例:

dart 复制代码
Future< String > fetchData() async {  
  await Future.delayed( Duration (seconds: 2 )); 
  // 模拟延迟  
  return "Hello Wolld!" ;  
}  
  
void main() async {  
  String result = await fetchData();  
  print (result); // 打印: Hello Wolld! 
}

async*

  • 目的 :用于定义一个函数,该函数随时间异步生成一系列值,并返回一个Stream
  • 行为async*函数是一个生成器,它使用关键字一次生成一个值yield。它生成一个可以监听值的流。
  • 返回类型 :隐式返回Stream<T>,其中T是产生的每个值的类型。
  • 用例:非常适合需要随时间产生多个值的场景,例如流数据、循环处理或处理实时更新。

async*的示例:

csharp 复制代码
Stream< int > countDown( int from) async * {  
  for ( int i = from; i >= 0 ; i--) {  
     await Future.delayed( Duration (seconds: 1 )); 
     // 模拟延迟  
     yield i; // 每次产生一个值  
  }  
}  
  
void main() {  
  countDown( 3 ).listen((value) {  
     print (value); // 打印:3、2、1、0(每秒一个)  
  });  
}

这里,countDown是一个async* 返回 的函数Stream<int>yield关键字在每个值可用时将其发送到流。

主要区别

使用哪个?

  • async当您需要执行单个异步任务并返回一个结果(例如,获取单个 API 响应)时使用。
  • async*当您需要随时间异步发出多个值时使用(例如,流式传输传感器数据或生成具有延迟的序列)。

参考文章

相关推荐
火柴就是我8 小时前
从头写一个自己的app
android·前端·flutter
●VON15 小时前
Flutter 项目成功运行后,如何正确迁移到 OpenHarmony?常见疑问与跳转失效问题解析
flutter·华为·openharmony·开源鸿蒙
●VON15 小时前
Flutter 编译开发 OpenHarmony 全流程实战教程(基于 GitCode 社区项目)
flutter·openharmony·gitcode
消失的旧时光-19431 天前
Flutter 组件:Row / Column
flutter
程序员老刘1 天前
Flutter版本选择指南:3.35稳定,3.38发布 | 2025年11月
flutter·客户端
kirk_wang1 天前
Flutter 3.38和Dart 3.10中最大的更新
flutter
前端小伙计1 天前
Flutter 配置国内镜像,加速项目加载!
flutter
zonda的地盘1 天前
开发 Flutter Plugin 之 初始配置
flutter
消失的旧时光-19432 天前
Flutter TextField 从入门到精通:掌握输入框的完整指南
flutter
wordbaby2 天前
Flutter Form Builder 完全指南:告别 Controller 地狱
前端·flutter