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));