Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SWIFT
- HIG
- map
- rxswift
- ribs
- 리펙터링
- Protocol
- UITextView
- Refactoring
- 리펙토링
- Clean Code
- Xcode
- uitableview
- combine
- swift documentation
- ios
- UICollectionView
- uiscrollview
- 리팩토링
- 애니메이션
- swiftUI
- Observable
- MVVM
- collectionview
- 클린 코드
- Human interface guide
- tableView
- clean architecture
- RxCocoa
- 스위프트
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리 (async let) 본문
iOS 응용 (swift)
[iOS - swift] 2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리 (async let)
jake-kim 2023. 10. 4. 01:241. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법
2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리
* 해당 글에서는 간단한 사용법만 살펴보기 때문에, 개념적인 부분은 이전 포스팅 글 참고
동시 처리
- Async, Await를 사용하면 비동기 작업을 completion 클로저 블록 없이 한줄로 처리가 가능
let imageUrlString = "https://images.dog.ceo/breeds/australian-shepherd/pepper.jpg"
guard let url = URL(string: imageUrlString) else { return }
Task {
let image = try await loadImage(url: url)
}
- 코드상으로는 image를 불러오기를 기다리며 await 하위 부분은 실행이 되지 않고 기다리는 상태
let image = try await loadImage(url: url)
// wait for a loading image...
- 만약 여러 이미지를 불러오는 경우?
- 순차적으로 image1이 다 불러와야 image2가 불러오므로 특정 이미지가 늦게 불러오게되면 그만큼 기다리는 상태
let image1 = try await loadImage(url: url)
// wait for loading image...
let image2 = try await loadImage(url: url)
let image3 = try await loadImage(url: url)
let image4 = try await loadImage(url: url)
- image1, image2, image3, image4를 모두 동시에 불러오는 방법?
- async let 키워드를 사용하여 호출할 async 함수들을 프로퍼티로 만들고, await 배열로 묶어서 호출하면 동시에 호출이 가능
func imagesForConcurrency() async throws -> [UIImage] {
let imageUrlString = "https://images.dog.ceo/breeds/australian-shepherd/pepper.jpg"
guard let url = URL(string: imageUrlString) else { return [] }
async let first = loadImage(url: url)
// no wait for loading image
async let second = loadImage(url: url)
async let third = loadImage(url: url)
return try await [first, second, third]
}
* 전체 코드: https://github.com/JK0369/ExAsyncAwait_1
* 참고
'iOS 응용 (swift)' 카테고리의 다른 글
Comments