Dart await Future.wait() 与不带内部异步等待
Dart await Future.wait() with vs without inner async await
在 Dart 中,给定一个 async
方法
Future transformObject(T object);
以下都是合法的:
Future transformData(Iterable<T> objects) async {
await Future.wait(objects.map((o) => transform(o));
}
和
Future transformData(Iterable<T> objects) async {
await Future.wait(objects.map((o) async { await transform(o); });
}
两者之间有什么区别吗?如果我只想异步转换所有数据对象,我应该选择哪个?
如果transsform
return是Future
,那么transform
、(o) => transform(o)
和(o) async => await transform(o);
之间没有有意义的区别。添加的包装越多,开销越大,但基本相同。
你的函数,(o) async { await transform(o); }
没有 return transform
return 的未来结果,但是如果你不需要那个值,那么没关系。 (虽然这个名字确实表明你关心价值。)你仍然会等待那个未来 complete 在完成之前。
您可以(可能应该)追求的目标:
Future<List> transformData(Iterable<T> objects) =>
Future.wait(objects.map(transform));
在 Dart 中,给定一个 async
方法
Future transformObject(T object);
以下都是合法的:
Future transformData(Iterable<T> objects) async {
await Future.wait(objects.map((o) => transform(o));
}
和
Future transformData(Iterable<T> objects) async {
await Future.wait(objects.map((o) async { await transform(o); });
}
两者之间有什么区别吗?如果我只想异步转换所有数据对象,我应该选择哪个?
如果transsform
return是Future
,那么transform
、(o) => transform(o)
和(o) async => await transform(o);
之间没有有意义的区别。添加的包装越多,开销越大,但基本相同。
你的函数,(o) async { await transform(o); }
没有 return transform
return 的未来结果,但是如果你不需要那个值,那么没关系。 (虽然这个名字确实表明你关心价值。)你仍然会等待那个未来 complete 在完成之前。
您可以(可能应该)追求的目标:
Future<List> transformData(Iterable<T> objects) =>
Future.wait(objects.map(transform));