为什么程序在进入打印语句之前不等待函数返回列表?
我认为这是因为我使forEach循环异步,但我需要使其异步才能获得newSummary,这是一个Future。
Future syncToCloud() async{
final List<Map<String,dynamic>> _events = await events();
print(_events.length);
}
Future<List<Map<String, dynamic>>> events() async {
List<Map<String, dynamic>> maps = await db.query('data');
List<Map<String, dynamic>> newMaps=[];
maps.forEach((element)async{
Map<String, dynamic> newElement = {};
if(element['summary']!=''){
newElement['summary'] = await newSummary(element['summary']);
print(newElement['summary']);
}
else{
newElement['summary'] = element['summary'];
}
newMaps.add(newElement);
});
return newMaps;
}
void main()async{
await syncToCloud();
}
最佳答案
您正在无法执行的回调中执行return [{'hi':5}]
。您应该等待Future.delayed,然后像await Future.delayed(Duration(seconds: 2));
这样返回List。
Future syncToCloud() async{
final List<Map<String,dynamic>> _events = await events();
print(_events.length);
}
Future<List<Map<String, dynamic>>> events() async {
await Future.delayed(Duration(seconds: 2));
return [{'hi':5}];
}
void main()async{
await syncToCloud();
}
关于flutter - Flutter Await不等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62734766/