Search

.task{} 내 비동기처리

분류
큰거온다 프로젝트
생성 일시
2023/01/03 02:39
최종 편집 일시
2023/07/11 08:19
멘토링 요청시간
2023/01/04 10:45
최종 편집자
멘토링 신청자
담당멘토
양호준
강사용 질의응답
멘토FAQ(보조강사용)
배정상태
해결완료
번호
4
신청팀
개인
멘토링 완료시간
2023/01/04 13:40
비용지급
지급완료
소요시간
3
작성자
진태영

.task{} 내 비동기처리

안녕하세요 저희가 구현하고 있는 코드 중에서 Firebase에 있는 데이터를 화면이 생성될 때 로드해서 처리하고 싶은 코드가 잇습니다. 1. Firebase 데이터를 로드 → 로드된 데이터를 사용하여 변수에 저장 이렇게 하고싶습니다. 그런데 Firebase 데이터를 로드하는 fetch 함수가 비동기 처럼 진행이 되는 것 같습니다. .task{} 안에서 fetch 함수 실행 → 완료 → 다른 함수 실행 이렇게 진행하고 싶은데, 현재는 fetch함수 실행 → 다른 함수 실행 → fetch 함수 실행 완료 이렇게 되다보니 저희의 의도대로 진행되지 않고있습니다. 뷰가 나타났을 때마다 fetch 함수가 실행되고 정상적으로 완료되면 다른 함수가 실행되도록 하기위한 방법이 무엇이 있을까요?

화면캡쳐(예시)

위 질문에 해당하는 질문의 링크나 스크린샷을 여기에 추가해 멘토분들이 참고할 수 있도록 하세요.

해결 방안

뷰를 그리는 시점과 fetchProduct를 통해 product를 받아오는 시점이 문제였습니다.
뷰를 먼저 그리고 fetchProduct를 실행하면서 계속 productDic에 빈 딕셔너리가 넘어오고 이걸 !로 강제 언래핑을 하면서 처음 뷰를 그릴 때 앱이 터졌습니다.
따라서 productDic이 isEmpty인지를 검증하여 Empty인 경우 기본 값을 넣어주도록 수정해주었습니다.
<해결 포인트>
break point를 잘 활용하자.
뷰가 언제 그려지는지 파악하자.