Dart - ожидание всех асинхронных задач в цикле for
У меня есть список объектов в Dart, и я хочу выполнить асинхронную операцию с каждым из этих объектов. После завершения всех асинхронных операций я хочу выполнить последнюю операцию. В настоящее время я делаю это с помощью кода, который выглядит следующим образом:
for (int i = 0; i < myObjectList.length; i++) {
await myAsynchronousOperation(myObjectList[i]);
}
doFinalOperation();
Хотя это технически работает, я предполагаю, что это неэффективно, потому что цикл for будет ждать завершения первой асинхронной операции, прежде чем запускать вторую. Итак, насколько я понимаю, мы заканчиваем синхронным запуском асинхронных операций, что не может быть целью асинхронного программирования.
Поэтому мой вопрос заключается в том, можно ли каким-то образом запустить все асинхронные операции сразу, затем дождаться их завершения и, наконец, выполнить последнюю операцию. Заранее спасибо!
1 ответ
Использовать Future.wait
ждать нескольких в полете
Future
s:
await Future.wait([
for (int i = 0; i < myObjectList.length; i++)
myAsynchronousOperation(myObjectList[i]),
]);
doFinalOperation();