首页 > 解决方案 > 元素为每个随机获取并从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).. 中的元素不同,因此进一步的代码会变得混乱。如何解决这个问题?

标签: flutterdartgoogle-cloud-firestore

解决方案


我回答得太晚了,但这就是我解决这个问题的方式


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。


推荐阅读