비동기 문제가 너무 어렵습니다 ㅠㅠ
한 개의 뷰 컨트롤러에서 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에 테스크간의 디펜던시를 거는 것도 해 볼만 해요.
예를 들어 프로필 테스크에 로그인 테스크를 선행 테스크로 걸면 프로필에 들어갔을 때 자동으로 로그인을 띄워주는 게 가능해요.