首页 > 解决方案 > Dart 中的 async 和 async* 有什么区别?

问题描述

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

标签: dartflutter

解决方案


将函数标记为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;
  }
}

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


推荐阅读