비동기 시차 오류 (비동기, provider, firebase의 만남과 혼돈)

Angela Jeong·2024년 2월 7일
0

Flutter Troubleshooting

목록 보기
3/19
post-thumbnail

firebase에서 비동기로 데이터를 가져온 후 그 데이터를 가공하는 로직을 한 함수에 담았다. 그런데 provider와 state를 적용하니 화면 내에서 시차가 엉켜버려 원하는 대로 동작이 되질 않았다.

예상되는 원인

1) 리빌딩을 하면서 화면에 데이터가 다시 뿌려지는데 한 화면 내에서 실행되다보니 문제가 생긴 거였다.
2) firebase에서 데이터를 가져올 때 밀리세컨의 시차가 발생하는 것으로 보인다.

그러니까 여기저기서 시차가 발생하는 비동기와 관련된 오류로 보이는 것이다.

해결방안)

  • await을 붙였다고 순차실행이 보장되지 않는다.
  • 데이터 무결성을 보장할 수 없다면 리턴 시켜버리자. 리턴을 하면 값은 확실하니까!
  • 그리고 그 값을 가지고 가공하자.

혹시 조건이 충족되지 않거나 예상치 못한 문제가 발생할 경우에는 반환 값을 사용하여 해당 상황을 처리하자는 것이다. 데이터의 무결성과 안정성을 유지하며 프로그램이 예기치 않게 오류를 발생시키지 않도록 하는 중요한 원칙이다!

0개의 댓글