我正在使用颤振框架制作应用程序。在此期间,我遇到了 Dartasync和async*. 谁能告诉我它们之间有什么区别?
async
async*
将函数标记为async或async*允许它使用async/await表示Future.
await
Future
两者的区别在于它async*总是返回 a并提供一些语法糖来通过关键字Stream发出一个值。yield
Stream
yield
因此,我们可以做到以下几点:
Stream<int> foo() async* { for (int i = 0; i < 42; i++) { await Future.delayed(const Duration(seconds: 1)); yield i; } }
该函数每秒发出一个值,每次递增。