티스토리 뷰

전편 : https://junsangkwon.tistory.com/20

 

[iOS] RxSwift의 간단한 개념 정리 - 1. Observable

이 포스팅은 'RxSwift 4시간 만에 끝내기'라는 유튜브 강의를 보고 하는 개념 정리입니다. ref : https://www.youtube.com/watch?v=iHKBNYMWd5I&t=1965s 비동기 처리 비동기적인 데이터를 전달, 처리할 때는 주로..

junsangkwon.tistory.com

RxSwift에서 가장 중요한 개념인 Observable은 전편에 정리하였습니다.

그럼 이제 다음으로 중요한 개념인 Operator, Schedulers에 대해 정리하겠습니다.

 

Operator

번역하면 연산자, Observable을 다루는 다양한 기능의 메소드들입니다.

종류가 굉장히 많아서 자주 사용되는 몇 개만 다루겠습니다. 목차는 다음과 같습니다.

  • Just
  • From
  • Map
  • Filter
  • Merge
  • Zip
  • CombineLatest

Just

func printHello() {

	return Observable.just("Hello")
    
}
    

==========================================

printHello().subscirbe(onNext : {print($0)})

// 출력 결과
// Hello

- 데이터 하나만 전달할 경우 간단히 사용할 수 있습니다.

 

From

func printHelloWorld() {

	return Observable.from(["Hello", "World"])
    
}

==========================================

printHelloWorld().subscirbe(onNext : {print($0)})

// 출력 결과
// Hello
// World

- 데이터가 배열 안에 담길 때 요소 별로 전달되는 방식입니다.

- just로 전달했다면 배열 자체로 전달됩니다. (["Hello", "World"])

Map 

Observable.just(3)

.map { $0 * 2 }

.subscribe(onNext: { print($0) })

// 출력 결과
// 6

swift의 for in 문과 비슷하게, 각 항목에 함수를 적용하여 Observable 데이터를 변환합니다.

 

Filter

Observable.from([1,2,3,4])

.filter { $0 % 2 == 0 }

.subscribe(onNext: { print($0) })

// 출력 결과
// 2
// 4

반환 타입이 Bool인 매개변수 함수의 결과가 true면 새로운 컨테이너에 값을 담아 반환합니다.

 


Merge, Zip, CombineLatest는 예제 코드에 Subject가 들어감으로,

ReactiveX 사이트의 Marble Diagram 그림으로 대체하겠습니다.

Subject는 다음 편에 설명하겠습니다.

Merge

- 여러 Observable들을 묶어서 하나로 만드는 것입니다.

- 데이터 타입이 같아야 합니다.

 

Zip

- 위 Observable과 아래 Observable이 데이터가 한 개씩 생성되면 그걸 쌍으로 만드는 것입니다.

- 데이터 타입이 달라도 괜찮습니다.

- 만들 쌍이 없으면 사라집니다.

 

CombineLatest

- zip과 비슷한데 쌍이 없을 경우 제일 최근에 합쳐졌던 요소와 쌍을 만듭니다.


Scheduler

RxSwift는 GCD와 마찬가지로 다양한 기본 스케쥴러와 스케쥴러 관련 Operator를 제공합니다.

우선, operator로는 ObserveOn, SubscribeOn이 있습니다.

 

 

ObserveOn

.observeOn(MainScheduler.instance)

.subscribe( ... )

- 다음 줄에 실행될 쓰레드에 영향을 줍니다.

- 현재 쓰레드와 다른 쓰레드를 사용하고 싶을 때 사용합니다.

 

SubscribeOn

.subscibeOn(ConcurrentDispatchQueue)

.subscirbe( ... )

- 맨 처음에 실행될 쓰레드에 영향을 줍니다.

- 코드의 위치가 상관없습니다. 

- 주로 사용할 쓰레드를 정하고 싶을 때 사용합니다.

 

 

RxSwift의 스케줄러 종류

1) MainScheduler

- 메인 쓰레드에서 가장 위에 존재합니다.

- UI를 갱신할 때 주로 사용합니다.

2) CurrentThreadScheduler

- 현재 있는 쓰레드에서 작업이 실행됩니다.

3) SerialDispatchQueueScheduler

- background에서 추출하는 일을 처리할 때 사용합니다.

4) ConcurrentDispatchQueueScheduler

- SerialDispatchQueueScheduler와 같이 추출하는 일을 처리할 때 사용합니다.

5) OperationQueueScheduler 

- NSOperationQueue에서 실행되어야 할 작업을 처리합니다.

6) TestScheduler

- 테스트를 위한 것입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함