티스토리 뷰
이 포스팅은 'RxSwift 4시간 만에 끝내기'라는 유튜브 강의를 보고 하는 개념 정리입니다.
ref : https://www.youtube.com/watch?v=iHKBNYMWd5I&t=1965s
비동기 처리
비동기적인 데이터를 전달, 처리할 때는 주로 @escaping 클로저의 completion를 주로 사용합니다.
하지만, 이런 방식은 코드가 복잡하여 코드를 이해하기 어려울 수 있어 관리, 수정에 용이하지 않습니다.
RxSwift의 용도
RxSwift는 비동기 처리 코드를 동기적으로 처리하는 것과 같이(순차적으로) 코드를 작성할 수 있습니다.
즉, 비동기 처리 코드를 좀 더 가독성 있고 직관적으로 작성할 수 있습니다.
Observable
- Observable <T>는, T 형태의 데이터를 전달할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능입니다.
- 쉽게 말하면 나중에 생기는 데이터를 처리할 것이라고 명시 후, 데이터가 들어왔을 때 비동기적으로 처리하는 방식입니다.
- Observable은 3가지 이벤트 중 하나만 전달합니다.
- next: 데이터와 함께 next 이벤트를 전달
- completed: Observable이 성공적으로 종료될 때, completed 이벤트를 전달
- error: Observable에서 에러가 발생했을 때, error 이벤트를 전달
1) 비동기로 생기는 데이터를 Observable로 전달 예시 코드
func download(_key : String) -> Observable <String?> {
return Observable.create() { emitter in
emitter.onNext("Hello")
emitter.onCompleted()
return Disposables.create()
}
}
- Observable 데이터를 생성할 땐 create()를 사용합니다.
- onNext를 통해 next 이벤트와, 안의 data를 전달합니다.
- onCompleted를 통해 completed 이벤트가 전달되고 Observable이 종료됩니다.
- Disposable은 Observable 구독(subscribe)을 취소할 때 dispose()를 통해 사용됩니다.
2) Observable로 오는 데이터를 받아서 처리 예시 코드 - 1
download(key)
.subscribe { event in
switch event {
case .next (let data):
print(data)
case .completed:
break
case .error:
break
}
}
- subscribe를 통해 Observable에서 전달되는 event를 클로저 인자로 받습니다.
- Observable은 subscribe 호출 전까진 아무 짓도 하지 않습니다.
- 다음 코드는 switch문으로 받았고, next, completed, error로 나누어 받습니다.
- 출력 결과는 "Hello"가 될 것입니다.
3) Observable로 오는 데이터를 받아서 처리 예시 코드 - 2
download(key)
.subscribe(
onNext: { data in
print(data)
},
onError: { error in
break
},
onCompleted: {
break
})
- 다음과 같은 방법으로도 이벤트를 나누어 data를 받을 수 있습니다.
Observable의 생명 주기
1. Create 생성
2. Subscribe 받기, 구독
3. onNext 전달
4. onCompleted / onError 종료
5. Disposable 재사용 x or 중간에 취소
'iOS Programming' 카테고리의 다른 글
[iOS] RxSwift 간단한 개념정리 - 3. Subject, Relay (0) | 2021.06.15 |
---|---|
[iOS] RxSwift 간단한 개념정리 - 2. Operator, Scheduler (0) | 2021.06.10 |
[iOS] SwiftSoup를 통한 웹 크롤링하기 (0) | 2021.05.04 |
[iOS] SnapKit 사용해보기 (0) | 2021.04.13 |
[iOS] TableView (App Store 인기차트st 구현해보기) - 1탄 (0) | 2021.03.24 |
- Total
- Today
- Yesterday
- optional
- isNetworkAccessAllowed
- ios
- returnKey
- 스레드
- PHImageRequestOptions
- 운영체제
- OS
- swiftsoup
- 쓰레드
- 부캠
- Swift
- 멀티프로세스
- webcrawl
- sharedmemory
- 개발동아리
- WKUIDelegate
- setBackgroundColor
- 개발대외활동
- URLComponents
- 프로세스간통신
- 프로세스
- cs
- 디프만
- Xcode
- RxSwift
- PHAsset
- rxcocoa
- 스냅킷
- 슈퍼스칼라
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |