有几种方法可以实现这一点。Firebase没有用于此类内容的完成处理程序,但您可以做的是,如果在for循环中有少量ID,只需将其嵌套如下:
Database.database().reference().child("user-data").child(id1).observeSingleEvent(of: .value, with: { (snap) in
Database.database().reference().child("user-data").child(id2).observeSingleEvent(of: .value, with: { (snap) in
Database.database().reference().child("user-data").child(id3).observeSingleEvent(of: .value, with: { (snap) in
}
}
}
但是,如果数据可以变化,实现这一点的另一种方法是存储一个ids和Bool字典,以检查是否完成。
var ids = ["id1" : false, "id2" : false, "id3" : false]
func getNext() {
Database.database().reference().child("user-data").child(id1).observeSingleEvent(of: .value, with: { (snap) in
ids["id1"] = true
getNext()
}
}
也不要打电话
Database.Database().reference()
每个请求。而是将其存储为变量。查看此项了解更多信息:
Firebase best practices