flutter - 元素为每个随机获取并从firestore获取数据
问题描述
fireDetail.forEach((element) async {
await checkEach(element);
});
}
checkEach(element) async {
print(element.path);
await Firestore.instance
.document('${element.path}/likedBy/$currentUser')
.get()
.then((value) => print(element.path));
}
/flutter (6906): fire/c0829bb0-2dce-11eb-be17-6debf3d459db
I/flutter (6906): fire/b9a45680-2dce-11eb-b289-d9b50dcbb605
I/flutter (6906): fire/89aa14b0-2dce-11eb- b507-672e33a10129
I/flutter (6906): fire/6cebfcd0-2dce-11eb-8a61-9909929ac404
//下面是来自.then
I/flutter (6906)的命令:fire/89aa14b0-2dce-11eb-b507-672e33a10129
I/扑动(6906):火灾/c0829bb0-2dce-11eb-be17-6debf3d459db
I/扑动(6906):火灾/6cebfcd0-2dce-11eb-8a61-9909929ac404
I/扑动(6906):火灾/b9a45680-2dce-11eb-b289 -d9b50dcbb605
为什么 forEach 和 .then 的顺序发生了变化?
可以看出,for each 发送的元素与打印在 .then(value).. 中的元素不同,因此进一步的代码会变得混乱。如何解决这个问题?
解决方案
我回答得太晚了,但这就是我解决这个问题的方式
checkIsLiked(List fireDetail) async {
for (var i in fireDetail) {
await checkEach(i);
}
}
checkEach(element) async {
print(element.path);
await Firestore.instance
.document('${element.path}/likedBy/$currentUser')
.get()
.then((value) => print(element.path));
}
我用典型的 for 循环替换了 forEach。
推荐阅读
- android - 无法在 Brida 中使用应用程序的类
- r - 在 dplyr 中结合使用 minimum 和 mutate 时如何处理重复项?
- security - 从 GPU 中提取数据
- javascript - 有没有一种好方法可以在跨事件发射器/事件循环边界的生产中显示错误跟踪?
- reactjs - 如何使用 Material UI 制作头像选择器
- angular - ng serve 找不到 node.js 核心模块
- servicestack - Servicestack - 将多个 POCO 映射到一个表的可能性
- javascript - 创建条形图后如何更改其背景颜色?
- python - 如何在 Python 中移动批量文件?
- processing - 使用 processing.sound.* 播放歌曲;