flutter - 如何从 Dart 中的期货列表中异步流式传输加载的对象
问题描述
我有一个可以通过调用函数 object.load() 加载的对象列表。此函数异步返回同一对象的加载版本。我想同时调用列表中所有对象的 load() 函数,并在加载完成后立即流式传输加载的版本。下面的代码有效,但程序一次加载一个对象。
发件人:
Stream<ImageIconModel> streamLoadedIcons() async* {
for (var i = 0; i < imageIconModels.length; i++) {
yield await imageIconModels[i].load().then((loadedIconModel) {
return loadedIconModel;
});
}
}
接收者:
await for (var loadedIcon in streamLoadedIcons()) {
final var result = doSomething(loadedIcon);
yield result;
}
主要问题是:在发送者中,如果我等待每个 load() 调用,它将执行循环中的每一步,等待 load() 完成。但是,如果我删除“等待”,我将返回一个未来,而不是加载的图标。
解决方案
final loadedIconModelStream = Stream.fromFutures([
for (final iconModel in imageIconModels) iconModel.load(),
]);
推荐阅读
- php - 上传不带扩展名的 iphone 图片 (PHP)
- reactjs - 在反应日期选择器中突出显示接下来的 2 周
- xamarin - 地理位置 PositionChanged Xamarin 基本要素(未计划)
- kendo-ui - Kendo MVC 网格自定义“包含”数组列上的过滤器
- jquery - 为什么 jQuery 不返回最近的表行值?
- javascript - Chromebook 全屏键码?
- django - Django - 我可以从视图中请求 cURL
- java - 通过静态声明启动时,Java lambda 陷入死锁
- reactjs - 无法在 redux 商店中设置状态
- excel - 来自多个工作簿的数据到一个主控。不匹配错误