Future<String> loadAsset() async { return await rootBundle.loadString('assets/data/entitIEs.Json');}
loadString方法来自Flutter SDK,并且是异步的.
然后在另一个方法中调用loadAsset方法,必须将其标记为async,因为loadAsset是异步的,我需要使用await:
Future<List<Entity>> loadEntitIEs() async { String JsonData = await loadAsset(); return parseData(JsonData);}
parseData方法不是异步的,它接收一个String,解析它,并返回一个对象列表:
List<Entity> parseData(String JsonString) { ...}
但由于loadEntitIEs必须用async标记,这需要它返回Future,但实际上,它不是Future,因为因为我使用await,它等待loadAsset方法完成,然后使用结果调用parseData函数.
这很容易变成异步调用的雪球,因为每个使用loadEntitIEs的方法也必须标记为异步.
另外,我不能在类构造函数中使用loadEntitIEs,因为构造函数应该标记为async,这在Dart中是不允许的.
我在Dart中使用async / await模式错了吗?我怎么能在类构造函数中使用loadEntitIEs方法?
解决方法 不,异步具有传染性,无法从异步返回到同步执行.async / await只是methodThatReturnsFuture()的语法糖.然后(…)
使用异步标记方法只是为了允许您在其正文中使用await.如果没有异步,您仍然需要返回一个Future来调用代码,以便在loadAsset()变为可用之后执行.
总结以上是内存溢出为你收集整理的异步 – Dart中的Future / async / await全部内容,希望文章能够帮你解决异步 – Dart中的Future / async / await所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)