小编典典

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

all

我正在使用颤振框架制作应用程序。在此期间,我遇到了 Dartasyncasync*. 谁能告诉我它们之间有什么区别?


阅读 224

收藏
2022-08-08

共1个答案

小编典典

将函数标记为asyncasync*允许它使用async/await表示Future.

两者的区别在于它async*总是返回 a并提供一些语法糖来通过关键字Stream发出一个值。yield

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

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

该函数每秒发出一个值,每次递增。

2022-08-08