Dispatch queue 비동기 문제

비동기 문제가 너무 어렵습니다 ㅠㅠ

한 개의 뷰 컨트롤러에서 3개의 json을 요청하고 싶습니다
각 요청 함수를 f1, f2, f3이라고 하고, 이 요청들을 보내기 전에 f0을 실행해야 하는데

그래서 제가 짠 코드는

viewwillappear{
    무언가
    Dispatchqueue.main.async { f0() }
}

f0() {
    무언가
    Dispatchqueue.main.async{
        f1()
        f2()
        f3()
    }
}

이런식으로 했는데
세 개의 json을 다 받아온 후에 화면ui를 업데이트하려면 어디서 호출해야하는지 모르겠습니다

f1끝나고나서 f1이받아온값만 업데이트 / f2 끝나고 나서 f2가 받아온거만 / f3 끝나고 f3이 받아온거만
이렇게 쪼개서하는방법밖에 없는지,

그리고 비동기문제 수업시간에 배웠는데도 헷갈리는 게 계속 생기는데
뭘 보고 공부하면 좋을지, 팁도 부탁드립니다 ㅜㅜ

좋아요 1

1-2개의 비동기 태스크 수준을 넘어서는 비동기 태스크간 순서 제어는 어려운 문제에요.

Swift 창시자인 크리스 래티너의 제안이에요. 앞으로 Swift에 추가될 중요한 피처가 되겠죠.

당장 적용하자면 이런 라이브러리를 시도해보는 것도 방법일 듯 하네요.

좀더 더 많은 방법들은 아래 사이트 중 concurrent 항목을 찾아보세요.

좋아요 1

와 감사합니다!!!
awesomeios 저기 정말 어썸 하네요,

코틀린을 다뤄본적이 있어서 스위프트도 당연히 async await가 있을거라 생각하고
처음에 한참 swift async 키워드로 검색했었는데 딱 원하는 익숙한 포맷으로 되어있는 게 없었어서 어려웠는데
원래 없는 거였군요,

좋아요 1

혹시 좀 더 High Level 의 솔루션도 괜찮다면

Operation Queue에 테스크간의 디펜던시를 거는 것도 해 볼만 해요.

예를 들어 프로필 테스크에 로그인 테스크를 선행 테스크로 걸면 프로필에 들어갔을 때 자동으로 로그인을 띄워주는 게 가능해요.