Dart | 你知道 sync*/async* 是怎么用的吗?

本文介绍了Dart中的同步生成器`sync*`和异步生成器`async*`的使用。`sync*`函数返回一个`Iterable`,在未调用迭代方法时不会执行函数体。`async*`则用于异步操作,允许在等待异步操作期间暂停和恢复执行,提高代码的流畅性。通过示例展示了如何使用这两个特性进行数据请求和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平时我们在写业务逻辑的时候,肯定都会与网络打交道,那肯定也就避免不了异步请求,代码类似如下:

int getData() async {	
  Response r = await Dio().get('https://www.baidu.com');	
  return r.data;	
}

这段代码相信很多人都非常非常熟悉了,我们也都知道 async 是什么意思,那加上一个星号,你还知道吗?

加上星号其实就是「函数生成器」的意思。

那我们先从「sync/sync*」说起。

sync/sync*

「sync」我们都知道是默认程序运行的状态,举个例子:

foo1 (){	
  print('foo1 start');	
  for(int i = 0; i < 3; i++){	
    print(i);	
  }	
  print('foo1 stop');	
}

当我们在 main函数里运行,结果大家应该都很清楚:

foo1 start

0 1 2

foo1 stop

那所谓的函数生成器呢?

被「sync*」标记的函数,一定要返回一个 「Iterable」,这样的函数生成器叫做同步生成器:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值