我一直认为async/await比Futures API更加优雅和性感,但现在我面临这样一种情况:Future API的实现非常简短和简洁,而async/await的替代方案似乎冗长且丑陋。
我在注释中标记了我的两个问题#1和#2:
class ItemsRepository
{
Future<dynamic> item_int2string;
ItemsRepository() {
// #1
item_int2string =
rootBundle.loadString('assets/data/item_int2string.json').then(jsonDecode);
}
Future<String> getItem(String id) async {
// #2
return await item_int2string[id];
}
}
#1:我该如何在这里使用async/await代替Future.then()?最优雅的解决方案是什么?
#2:如果经常调用该方法,这是否高效?await会增加多少开销?我应该将已解决的future作为实例变量,也就是说
completedFuture ??= await item_int2string;
return completedFuture[id];