안녕하세요.
AsyncSequence가 뭔지 WWDC 영상 보면서 알아볼게요.
# AsyncSequence
async/await은 저번에 'Meet async/await in Swift'에서 알아봤어요.
AsyncSequence는 특정 element에 대해 비동기적이고 순차적인 반복 액세스를 제공합니다.
이를 위해 for-await-in 또는 for-try-await-in 구문을 사용합니다.
(for-await-in 구문을 사용하면 다음 element가 준비될 때까지 suspend하고, 다음 element가 준비되면 resume 합니다.)
# Iterating Sequence, AsyncSequence
AsyncSequence가 컴파일러에서 어떻게 동작하는지 가볍게 살펴볼게요.
일반적인 Sequence를 for-in loop에서 아래처럼 사용한다고 가정했을 때,
위 코드는 실제로 컴파일러에서 다음과 같이 동작합니다.
AsyncSequence는 makeIterator 대신 makeAsyncIterator를 사용합니다.
# Concurrently Iterating
만약 연속해서 for-await-in loop를 사용한다면, 상위 for-await-in loop가 완전히 종료될 때까지 다른 for-await-in loop가 실행되지 않습니다.
만약 연속된 for-await-in loop를 동시에 실행시키고 싶으면 Task로 묶어야 합니다.
# AsyncSequence 적용하기
주기적이고 비동기적으로 데이터를 전달받아야 할 때, 일반적으로는 callback이나 delegate 방식을 많이 사용합니다.
하지만 이런 상황에서 AsyncStream을 사용하면 AsyncSequence 타입을 준수하므로 for-await-in loop를 사용할 수 있게 됩니다.
# 참고
https://developer.apple.com/videos/play/wwdc2021/10058
Meet AsyncSequence - WWDC21 - Videos - Apple Developer
Iterating over a sequence of values over time is now as easy as writing a “for” loop. Find out how the new AsyncSequence protocol enables...
developer.apple.com
'WWDC' 카테고리의 다른 글
[WWDC21] Distribute apps in Xcode with cloud signing (1) | 2024.06.10 |
---|---|
[WWDC21] Explore structured concurrency in Swift (0) | 2024.05.28 |
[WWDC21] Meet async/await in Swift (1) | 2024.03.09 |
[WWDC22] NavigationStack, NavigationSplitView (0) | 2024.03.02 |
[WWDC20] State, Binding, StateObject, ObservedObject (0) | 2024.02.19 |