1

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

for (int i = 0; i < myObjectList.length; i++) {
  await myAsynchronousOperation(myObjectList[i]);
}
doFinalOperation();

虽然这在技术上可行,但我认为它效率低下,因为 for 循环将等待第一个异步操作完成,然后再启动第二个异步操作。所以根据我的理解,我们最终会同步触发异步操作,这不是异步编程的意图。

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

4

1 回答 1

3

用于Future.wait等待多个 in-flight Future

await Future.wait([
  for (int i = 0; i < myObjectList.length; i++)
    myAsynchronousOperation(myObjectList[i]),
]);
doFinalOperation();
于 2020-12-03T20:04:17.343 回答