如何在Dart中对Map使用带async的map()方法?
解决Dart中异步转换Map的问题
原代码报错的核心原因是:Map.map()的异步回调会返回Future<MapEntry>,最终得到的是Iterable<Future<MapEntry>>,无法直接赋值给普通Map类型。要实现异步转换并写成一行代码,你可以结合Future.wait()和Map.fromEntries()完成:
Map secondMap = Map.fromEntries(await Future.wait(firstMap.entries.map((entry) async => MapEntry(entry.key, await someAsyncFunction(entry.value)))));
- 先通过
firstMap.entries获取原Map的所有键值对条目 - 用
map()遍历每个条目,执行异步操作返回Future<MapEntry> - 用
Future.wait()等待所有异步任务完成,得到List<MapEntry> - 最后通过
Map.fromEntries()将条目列表转换为目标Map
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

