平时我们在写业务逻辑的时候,肯定都会与网络打交道,那肯定也就避免不了异步请求,代码类似如下:
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」,这样的函数生成器叫做同步生成器: