Dart中的async和async *有什么区别?

问题描述 投票:2回答:1

我正在使用flutter框架创建一个应用程序。在此期间,我遇到了Dart“async”和“async *”中的关键字。谁能告诉我他们之间有什么区别?提前致谢。

dart flutter
1个回答
12
投票

将函数标记为asyncasync*允许它使用async / await关键字来使用Future

两者之间的区别在于async*将始终返回Stream并提供一些语法糖以通过yield关键字发出值。

因此,我们可以做到以下几点:

Stream<int> foo() async* {
  for (int i = 0; i < 42; i++) {
    await Future.delayed(const Duration(seconds: 1));
    yield i;
  }
}

此函数每秒发出一个值,每次都会递增

© www.soinside.com 2019 - 2024. All rights reserved.