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*当您需要随时间异步发出多个值时使用(例如,流式传输传感器数据或生成具有延迟的序列)。

参考文章

相关推荐
hudawei9964 分钟前
对比kotlin和flutter中的异步编程
开发语言·flutter·kotlin·异步·
庄雨山7 分钟前
深度解析Flutter手势系统:原理、实战与开源鸿蒙ArkUI手势交互对比
flutter·openharmonyos
kirk_wang8 分钟前
Flutter 三方库在 OHOS 平台的适配实践
flutter·移动开发·跨平台·arkts·鸿蒙
小a杰.8 小时前
Flutter 与 AI 深度集成指南:从基础实现到高级应用
人工智能·flutter
程序员老刘15 小时前
跨平台开发地图:客户端技术选型指南 | 2025年12月
flutter·客户端
一名普通的程序员16 小时前
使用 Flutter Pay 插件实现 Apple Pay 和 Google Pay 的完整指南
flutter
麦客奥德彪17 小时前
Flutter riverpod 对应Android开发概念理解
flutter
tangweiguo0305198717 小时前
Kotlin vs Dart vs Swift:语法对比全解
flutter
feelingHy18 小时前
GetX 状态管理实践
flutter
tangweiguo0305198718 小时前
Flutter多品牌应用架构实战:从配置驱动到编译部署的完整解决方案
flutter