好的,我有一个文件列表,我需要对列表中的每个成员运行一个函数.我本质上想做这样的事情:
for(File file in files) {
functionThatReturnsAFuture(file);
}
但显然这不会起作用,因为返回Future的函数异步激发.我唯一的 Select 是这样的吗?
List<File> files = new List<File>();
// Add files somewhere
Future processFile(int i) {
return new Future.sync(() {
//Do stuff to the file
if(files.length>i+1) {
return processFile(i+1);
}
});
}
processFile(0);
编辑: 我想更多的背景更重要.最终目标是将多个文件合并到单个JSON对象中,以便提交给服务器.FileReader对象使用事件执行读取,因此我使用Completer创建了一个提供Future的包装函数.我可以让所有这些都异步运行,然后触发一个事件,在它们全部完成时提交它,但与使其全部正常工作的for-each循环相比,这需要相对较多的设置(无论如何,如果存在这样的循环的话).核心问题是需要对文件列表运行"将来返回"函数,然后执行依赖于它们都已完成的操作.