SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
고병학 22.11.09
RxSwift
비동기 라이브러리
목차
• RxSwift 소개
• Observables
• Publish, Behavior
• Subjects, Relay
• RxSwift operator들
RxSwift
RxSwift 소개
• 비동기 처리를 편하게 해줘서?
• 코드를 깔끔하게 작성하고 싶어서?
왜 쓰는가?
출처: https://github.com/ReactiveX/RxSwift; https://ios-development.tistory.com/95
RxSwift(Reactive eXtension Swift)란
관찰 가능한 연속성(순차적)형태와
함수형태의 연산자를 이용해서
비동기&이벤트를 위한 코드로
구성하고 있는 라이브러리
Observable
Observable은 뭘까?
대략 이런 모습입니다.
Observable은 뭘까? RxSwift 6.5.0
실제 구현 코드
Observable의 생명주기
• Create
• Subscribe
• onNext
Observable이 끝나는 생명주기
• onComplete
• onError
• Disposed
Observable이 dispose되어야 메모리에서 사라진다.
Publish,
Behavior
• Publish는 초기 값을 가지지 않는다.
• Behavior는 초기 값을 가진다.
Publish, Behavior
Subject,
Relay
"Hot" and "Cold" Observables
• 그냥 Observable은 subscribe가 호출될 때 생성된다.
즉 subscribe가 되기 전에는 옵저버블이 정의만 되어있고 생성되지 않았다.
이는 subscribe후에만 이벤트를 방출하는 Cold Observable이다.
• Subject는 subscribe 전에도 생성이 가능하다.
누군가 자신을 구독하기 전에도 이벤트를 방출할 수 있다.
그래서 이를 Hot Observable이라고 한다.
출처: https://dongminyoon.tistory.com/58
• Subject는 Observable이면서 observer 역할을 한다.
• Relay는 complete와 error를 발생시킬 수 없다.
Dispose되기 전까지는 계속 작동한다.
따라서 Relay는 UI 작업을 하기에 적합하다.
Relay는 RxCocoa 혹은 RxRelay를 필요로 한다.
Subject, Relay
Subject, Relay 코드 차이
Operators
Operators
RxSwift의 꽃이라고 불리는 operators
• map
•
fl
atMap
• zip
• merge
• take
•
fi
lter
• debounce
• throttle
map, flatMap
비슷한데 다른
• map은 연산값을 반환한다. •
fl
atMap은 Observable을 반환한다.
map 예제 (1/2)
map 예제 (2/2)
flatMap
예제
map과 flatMap 예제
찾아보는 방법
https://reactivex.io/documentation/operators
• marble 그림을 통해 이해할 수 있다.
• 구슬: 데이터
• 화살표: Observable
• 사각형: Operator
• 세로 작대기: complete
• 구슬을 드래그해서 알아볼 수 있다.
• 볼드체는 대표 오퍼레이터
from
https://reactivex.io/documentation/operators
zip
https://reactivex.io/documentation/operators
merge
https://reactivex.io/documentation/operators
combineLatest
https://reactivex.io/documentation/operators
take
https://reactivex.io/documentation/operators
filter
https://reactivex.io/documentation/operators
Just
https://reactivex.io/documentation/operators
debounce
https://eunjin3786.tistory.com/80
throttle (공식 홈에 없었음)
https://eunjin3786.tistory.com/80
감사합니다

Contenu connexe

Similaire à RxSwift

Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
스파르탄Js in sidejs5
스파르탄Js in sidejs5스파르탄Js in sidejs5
스파르탄Js in sidejs5Jin-Hyun Park
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)Software in Life
 
Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)
Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)
Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)knight1128
 
Ahea Study reactive programming
Ahea Study reactive programming Ahea Study reactive programming
Ahea Study reactive programming Sunghyun Roh
 
2017년 javascript의 현재주소
2017년 javascript의 현재주소2017년 javascript의 현재주소
2017년 javascript의 현재주소윤학 권
 
Hight performance java script chapter1, 2
Hight performance java script chapter1, 2Hight performance java script chapter1, 2
Hight performance java script chapter1, 2YOUNGMIN JUN
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
KSUG 스프링캠프 2017 발표자료
KSUG 스프링캠프 2017 발표자료KSUG 스프링캠프 2017 발표자료
KSUG 스프링캠프 2017 발표자료용근 권
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoGwan-Taek Lee
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편NAVER D2
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)Sang Don Kim
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without DockerfileWon-Chon Jung
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서Gitaek kwon
 
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...NAVER D2
 

Similaire à RxSwift (20)

Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
스파르탄Js in sidejs5
스파르탄Js in sidejs5스파르탄Js in sidejs5
스파르탄Js in sidejs5
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)
 
Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)
Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)
Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)
 
Ahea Study reactive programming
Ahea Study reactive programming Ahea Study reactive programming
Ahea Study reactive programming
 
2017년 javascript의 현재주소
2017년 javascript의 현재주소2017년 javascript의 현재주소
2017년 javascript의 현재주소
 
oVirt introduction
oVirt introduction oVirt introduction
oVirt introduction
 
Hight performance java script chapter1, 2
Hight performance java script chapter1, 2Hight performance java script chapter1, 2
Hight performance java script chapter1, 2
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
KSUG 스프링캠프 2017 발표자료
KSUG 스프링캠프 2017 발표자료KSUG 스프링캠프 2017 발표자료
KSUG 스프링캠프 2017 발표자료
 
An overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demoAn overview of kubernetes & (very) simple live demo
An overview of kubernetes & (very) simple live demo
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편[D2CAMPUS] Tech meet up ; iOS 개발편
[D2CAMPUS] Tech meet up ; iOS 개발편
 
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서발표용 킴스큐 2012사업보고서
발표용 킴스큐 2012사업보고서
 
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
D2 OPEN SEMINAR - Smart editor 3.0 swift 도입기 (static library에서 dynamic framew...
 

RxSwift