【发布时间】:2015-12-17 19:35:20
【问题描述】:
我正在做一个需要模板的项目。主模板有一个指定数据源的导入属性。然后使用 String.replaceAllMapped 读取数据并将其插入到字符串中。以下代码适用于 File api,因为它有一个 readAsStringSync 方法来同步读取文件。我现在想从任何返回 Future 的任意流中读取。
如何让 async/await 在这种情况下工作? 我还为 replaceAllMapped 寻找了一个异步兼容的替代品,但我没有找到不需要使用正则表达式多次传递的解决方案。
这是我的代码的一个非常简化的示例:
String loadImports(String content){
RegExp exp = new RegExp("import=[\"\']([^\"\']*)[\"\']>\\s*<\/");
return content.replaceAllMapped(exp, (match) {
String filePath = match.group(1);
File file = new File(filePath);
String fileContent = file.readAsStringSync();
return ">$fileContent</";
});
}
示例用法:
print(loadImports("<div import='myfragment.txt'></div>"))
【问题讨论】:
-
我不确定我是否理解您想要做什么,即您想用
Future<String>替换哪个部分?您在调用replaceAllMapped? 时读取的文件内容 -
这种函数没有内置版本,你必须编写一个期望回调函数是异步的,如下面的 Tonio。
标签: dart async-await