For loop Dart-在for循环中等待所有异步任务

For loop Dart-在for循环中等待所有异步任务,for-loop,asynchronous,dart,async-await,for-await,For Loop,Asynchronous,Dart,Async Await,For Await,我在Dart中有一个对象列表,我想对这些对象中的每一个执行异步操作。在所有异步操作完成之后,我想执行最后一个操作。我目前使用的代码如下所示: for (int i = 0; i < myObjectList.length; i++) { await myAsynchronousOperation(myObjectList[i]); } doFinalOperation(); for(int i=0;i

我在Dart中有一个对象列表,我想对这些对象中的每一个执行异步操作。在所有异步操作完成之后,我想执行最后一个操作。我目前使用的代码如下所示:

for (int i = 0; i < myObjectList.length; i++) {
  await myAsynchronousOperation(myObjectList[i]);
}
doFinalOperation();
for(int i=0;i
虽然这在技术上是可行的,但我认为这是低效的,因为for循环将在启动第二个异步操作之前等待第一个异步操作完成。因此,根据我的理解,我们最终会同步触发异步操作,这不是异步编程的目的

因此,我的问题是,是否有可能一次触发所有异步操作,然后等待它们全部完成,最后执行最后的操作。提前谢谢

用于等待多个飞行中的
未来
s:

wait Future.wait([
for(int i=0;i
用于等待多个飞行中的
未来
s:

wait Future.wait([
for(int i=0;i
谢谢您的回答!然而,这给我提出了另外两个问题:1。Android Studio给了我以下警告:“for、if和spread元素在2.3.0版之前不受支持,但这段代码必须能够在早期版本上运行。”这在上下文中意味着什么?2.使用带括号的for循环时,此代码不起作用。以下错误:“无法将参数类型“List”指定给参数类型“Iterable”。“如果要在for循环中插入If条件,这似乎是不可能的。1。修改您的
pubspec.yaml
文件,并指定更高的最小省道版本。否则,工具会假定您的代码与旧版本的Dart SDK保持兼容。2.如果
myAsynchronousOperation
返回一个
Future
,并且您按照我在示例中给出的方式键入它,那么代码应该可以工作。请注意,这是一个特殊的集合-
for
语法,不能在循环体中添加大括号(
{
}
),因为这将创建一个
集合
文本。是的,可以在集合中使用
if
for
循环。它被调用。下面是在2.3中添加的内容:如果
myAsynchronousOperation
确实已经是一个函数,那么这是为数不多的几个地方之一,我可能不使用新的列表文字,只需执行
wait Future.wait(myObjectList.map(myAsynchronousOperation))。谢谢你的回答!然而,这给我提出了另外两个问题:1。Android Studio给了我以下警告:“for、if和spread元素在2.3.0版之前不受支持,但这段代码必须能够在早期版本上运行。”这在上下文中意味着什么?2.使用带括号的for循环时,此代码不起作用。以下错误:“无法将参数类型“List”指定给参数类型“Iterable”。“如果要在for循环中插入If条件,这似乎是不可能的。1。修改您的
pubspec.yaml
文件,并指定更高的最小省道版本。否则,工具会假定您的代码与旧版本的Dart SDK保持兼容。2.如果
myAsynchronousOperation
返回一个
Future
,并且您按照我在示例中给出的方式键入它,那么代码应该可以工作。请注意,这是一个特殊的集合-
for
语法,不能在循环体中添加大括号(
{
}
),因为这将创建一个
集合
文本。是的,可以在集合中使用
if
for
循环。它被调用。下面是在2.3中添加的内容:如果
myAsynchronousOperation
确实已经是一个函数,那么这是为数不多的几个地方之一,我可能不使用新的列表文字,只需执行
wait Future.wait(myObjectList.map(myAsynchronousOperation))