gpt4 book ai didi

dart - 如何在Dart中从Iterable >到Future >

转载 作者:行者123 更新时间:2023-12-03 04:20:36 24 4
gpt4 key购买 nike

我想通过使用map一对一地从异步函数中加载多个描述:

  Future<List<Description>> loadDescriptions(List<String> questions) async {
Iterable<Future<Description>> iterable =
questions.map((question) async => (await loadDescription(question)));
return iterable.toList();
}
不幸的是, .toList()在这里不起作用。有没有办法在dart中重写代码,以便获得 Future<List<Description>>作为输出?

最佳答案

我想以下应该起作用:

Future<List<Description>> loadDescriptions(List<String> questions) async =>
[for (final question in questions) await loadDescription(question)];
我应该补充一点,此解决方案中的行为是,每个 Future在序列中的下一个序列之前也将是 await(也由@jamesdlin提及),在某些情况下可能是次优的。
相反,我们可以同时在所有 await上添加 Future,让Dart提取结果,然后使用 List<Description> 返回 Future.wait:
Future<List<Description>> loadDescriptions(List<String> questions) =>
Future.wait(questions.map(loadDescription));

关于dart - 如何在Dart中从Iterable <Future <MyType >>到Future <List <MyType >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62852947/

24 4 0