// loadTM 함수는 Observable<TM>을 반환함.
func loadTM(lat: Double, lng: Double) -> Observable<TM>{
이 경고는 말그대로 어쩌구의 result가 사용되지 않았다. 즉, 저 함수가 Return 값이 있는데 왜 변수 정의를 안해줬니..?
_ = loadTM(lat: lat, lng: lng)
.flatMap{ tm in self.loadStation(tmX: tm.tmX, tmY: tm.tmY)}
.flatMap{ station in self.loadFineDust(stationName: station)}
.bind(to: observable)
_ 를 활용하면 해결 완.
var relay = PublishRelay<Int>()
// Observable이기도 하기 때문에 항목들을 하나 하나 거치면서 재배출하고 관찰하며 새로운 항목들을 배출할 수도 있다.
relay.subscribe(onNext:{
print("들어온 값 : \($0)")
})
var k = relay.map{
$0 / 2
}
k.subscribe(onNext:{
print("k .. : \($0)")
})
// 옵저버이기 때문에 하나 이상의 Observable을 구독할 수 있다.
Observable.range(start: 2, count: 9)
// .bind(to: relay) // 밑에 subscribe 코드를 간단하게
.subscribe(onNext:{
relay.accept($0)
})
Observable.from([1,1,1,1,1])
.bind(to: relay)
** 출력 **
들어온 값 : 2
k .. : 1
들어온 값 : 3
k .. : 1
들어온 값 : 4
k .. : 2
들어온 값 : 5
k .. : 2
들어온 값 : 6
k .. : 3
들어온 값 : 7
k .. : 3
들어온 값 : 8
k .. : 4
들어온 값 : 9
k .. : 4
들어온 값 : 10
k .. : 5
들어온 값 : 1
k .. : 0
들어온 값 : 1
k .. : 0
들어온 값 : 1
k .. : 0
들어온 값 : 1
k .. : 0
들어온 값 : 1
k .. : 0
asDriver를 사용하여 error가 나면 대응할 방법을 미리 정해둠.
.asDriver(onErrorRecover:: { (Error) -> Driver<T> in
code
})
.asDriver(onErrorDriveWith: Driver<T>)
.asDriver(onErrorJustReturn: T) // error가 나면 반환할 값