我正在尝试强制某些功能在使用之前完成从Firebase获取信息。虽然我一直在阅读调度小组和完成处理,但我不明白为什么只做下面的工作不起作用:
while (self.expectedPointCount == -1) {
self.ref?.child("Users").child(self.userID!).child("presetRouteCoordinateCount").observeSingleEvent(of: .value, with:{
snapshot in
self.expectedPointCount = snapshot.value as! Int //always zero or greater
})
while(self.expectedPointCount == -1){}
}
这将永远运行。
在while循环和Firebase快照例程中插入print语句表明它实际上从未进入Firebase快照例程。但是,当它不在while循环中时,它会进入例行程序。
看起来我必须以艰难的方式去做,但我不明白为什么。
非常感谢!
答案 0 :(得分:0)
这将是无限循环。尽管Firebase调用是在另一个线程上异步执行的,但它永远不会有机会启动,因为您永远不会在您调用的线程上留下无限循环。