iOS/RxSwift
[RxSwift] Create Operators [1]
최지철
2023. 10. 29. 19:18
반응형
just, of, from
- just : 하나의 항목을 방출하는 Observable을 생성
- ObservableTypeProtocol에 타입메서드로 선언되어있다.
- 파라미터로 하나의 요소를 받고 Observable로 리턴
- 파라미터로 전달된 요소를 그대로 방출!
let element = "jife"
Observable.just(element)
.subcribe { event in print(event) }
.disposed( by: disposebag)
//next(jife)
//completed
//출력값
Observable.just([1,2,3])
.subcribe { event in print(event) }
.disposed( by: disposebag)
//next([1,2,3])
//completed
- of : 2개이상의 값을 파라미터로 전달할 수 있다.
- 가변 파라미터로 전달 할 수 있다.
- 타입메서드로 선언되어있다.
Observable.of(kiwi, apple, orange)
.subcribe { elemnet in print(elemnet) }
.disposed( by: disposebag)
//next(kiwi)
//next(apple)
//next(orange)
//completed
//출력값
Observable.of([1,2], [2,3,4])
.subcribe { elemnet in print(elemnet) }
.disposed( by: disposebag)
//next([1,2])
//next([2,3,4])
//completed
//출력값
- from : 배열에 저장된 요소를 하나씩 방출하고 싶을때, 사용
Observable.from([1,2,3,4])
.subcribe { elemnet in print(elemnet) }
.disposed( by: disposebag)
//next(1)
//next(2)
//next(3)
//next(4)
//completed
//출력값
range, generate
- 정수를 지정된 수만큼 방출하는 옵저버블을 생성하는 연산자
range
- 시작값에서 1씩 증가하는 시퀀스를 생성
- 감소하거나 변경은 불가하다
Observable.range(start:1, count:4)
.subcribe { print($0) }
.disposed( by: disposebag)
//next(1)
//next(2)
//next(3)
//next(4)
//completed
//출력값
generate
- initialState : 초기 상태
- condition : 현재 상태를 검사하여, true를 반환하면 Observable 을 진행시키고, false를 반환하면 Observable을 종료
- scheduler : 어떤 scheduler에서 실행시킬 지 선택. 기본 값은 현재 스레드
- iterate : 이벤트를 발생시킨 후 매번 실행되는 명령
- range와 달리 파라미터 형식이 정수로 제한되지 않는다.
Observable.generate(initialState: 0,
condition: { $0 < 10},
iterate: { $0+1 })
.subscribe { event in
switch event {
case let .next(value):
print(value)
default:
print("finished")
}
}.disposed(by: bag)
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
// finished
반응형