2017-03-29 1 views
0

Firebase에서 정보를 얻으려면 일부 기능을 끝내야합니다. 내가 파견 그룹 및 완료 처리에 독서되었지만 그냥 작동하지 않습니다 아래의 일을 왜 이해가 안 :Swift 3에서 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

이것은 무한 루프입니다. Firebase 호출은 다른 스레드에서 비동기 적으로 실행되지만, 호출하는 스레드에서 무한 while 루프를 떠나지 않으므로 시작할 기회가 없습니다.

관련 문제