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

参考文章

相关推荐
ujainu4 小时前
Flutter + OpenHarmony 游戏开发进阶:轨迹拖尾特效——透明度渐变与轨迹数组管理
flutter·游戏·openharmony
一起养小猫5 小时前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
2501_944525545 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
微祎_9 小时前
Flutter for OpenHarmony:构建一个 Flutter 躲避障碍游戏,深入解析帧同步、动态难度与归一化坐标系统
flutter·游戏
一起养小猫9 小时前
Flutter for OpenHarmony 实战:番茄钟应用完整开发指南
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
一起养小猫9 小时前
Flutter for OpenHarmony 实战:数据持久化方案深度解析
网络·jvm·数据库·flutter·游戏·harmonyos
雨季66610 小时前
Flutter 三端应用实战:OpenHarmony “微光笔记”——在灵感消逝前,为思想点一盏灯
开发语言·javascript·flutter·ui·dart
kirk_wang11 小时前
Flutter艺术探索-Flutter三方库鸿蒙适配实战:从原理到实践
flutter·移动开发·flutter教程·移动开发教程
晚霞的不甘12 小时前
Flutter for OpenHarmony 实现高级视差侧滑菜单:融合动效、模糊与交互动画的现代 UI 设计
flutter·ui·前端框架·交互·鸿蒙
晚霞的不甘13 小时前
Flutter for OpenHarmony构建全功能视差侧滑菜单系统:从动效设计到多页面导航的完整实践
前端·学习·flutter·microsoft·前端框架·交互