목록async (3)
study record
1. Stream이란? 스트림(Stream)이란 데이터의 흐름을 의미한다. 이러한 데이터 흐름은 단방향이며, 한번에 일부 데이터를 처리한다. 즉, 데이터를 한번에 모두 처리하지 않고, 데이터가 하나씩 또는 여러 개씩 일정한 간격으로 생성되어 이를 연속적으로 처리하는 방식이다. 스트림은 많은 데이터를 처리하는 경우 유용하며, 여러 개의 데이터를 처리할 때 코드의 가독성과 유지보수성이 좋아진다. 스트림은 실시간으로 데이터를 처리하고, 데이터가 발생하는 즉시 처리할 수 있어 대규모 데이터 처리에 유용하다. 2. AsyncStream이란? An asynchronous sequence generated from a closure that calls a continuation to produce new elemen..
Custom Asynchronous Sequences를 만드는 방법 첫번째 AsyncSequence와 AsyncIteratorProtocol 둘 다를 채택해서 구현 - makeAsyncIterator() 구현 - next async thorws() 구현 두번째 방법 -> AsyncStream - AsyncStream은 AsyncSequence를 채택한다. - AsyncSequence로부터 기본 행동들을 다 상속한다. - 싱글 클로저로부터 값들 produce - sequence의 끝에 값이나 nil을 리턴하는 클로저를 가지는 방법과, continuation을 활용하는 방법이 있다. 🧪 AsyncStream 안의 비동기 메소드 구현에 Task는 꼭 필요한가? let stream = AsyncStream { ..
async: 메서드가 비동기로 작동할 것임을 보여준다. 이 메서드가 결과를 리턴할 때까지 실행을 멈춘다. await: 코드가 실행을 멈출 수 있음을 보여준다. async 메서드가 리턴할 때까지 기다린다. Task: 비동기 작업의 단위. 작업이 끝나거나 취소되는 것을 기다릴 수 있다. 🧪 completion handler → async 메서드로 변경해보기 // escaping closure func fetchStatus(completion: @escaping (String) -> Void) { URLSession.shared.dataTask( with: URL(string: "")! ) { data, response, error in guard let data = data else { return } co..