Listに対し、map関数でasync/awaitしたいとき
method() が Future<Hoge>
を返すメソッドだとして
List<Hoge> hogeList = elements.map((e) async => await method(e)).toList();
これはNG。
この場合、hogeListはList<Future<Hoge>>
のため、型エラーとなる。
map自体が返却する対象がasyncされているためFuture型を返すことになり、こういった挙動になる。
これを解消するためには、Future.wait
を利用する。
これを使うことで非同期処理を並列に処理できるため、Iterable<Future<T>>
を全て処理した上で返却してくれる。
List<Hoge> hogeList = await Future.wait(elements.map((e) => method(doc)).toList());