이번에는 RxJS의 구성요소 중 observer에 대해서 알아보겠습니다.

Observable에 의해 전달 된 값을 처리하는 콜백 콜렉션입니다.
ObserverObservable에 의해 전달되는 특정한 알림에 대한 간단한 콜백함수 집합(next, error, and complete)입니다.

다음은 일반적인 Observer 객체의 예입니다.

1
2
3
4
5
var observer = {
next: x => console.log('Observer got a next value: ' + x),
error: err => console.error('Observer got an error: ' + err),
complete: () => console.log('Observer got a complete notification'),
};

Observer를 사용하기 위해서 Observablesubscribe에게 Observer를 인자로 넘깁니다.

1
observable.subscribe(observer);

Observer는 Observable이 전달하는 특정 알림에 대한 3개의 콜백을 가진 객체입니다.

RxJS의 Observer는 불완전하게 쓰일 수 있습니다. 콜백 중 하나를 제공하지 않을경우, Observable에서 해당 콜백이 없기 때문에 일부 유형의 알림이 무시된다는 점을 제외하면 Observable의 실행은 계속 정상적으로 수행됩니다.

아래의 예제는 observercomplete이 없는 케이스입니다.

1
2
3
4
var observer = {
next: x => console.log('Observer got a next value: ' + x),
error: err => console.error('Observer got an error: ' + err),
};

Observablesubscribe할 때, Observer 객체 대신 콜백을 arguments로 제공할 수 있습니다.

1
observable.subscribe(x => console.log('Observer got a next value: ' + x));

observable.subscribe는 첫번째 콜백 argument를 사용해서 Observer 객체의 next핸들러를 만듭니다. 총 3개의 콜백 타입은 아래와 같이 쓸 수 있습니다.

1
2
3
4
5
observable.subscribe(
x => console.log('Observer got a next value: ' + x),
err => console.error('Observer got an error: ' + err),
() => console.log('Observer got a complete notification')
);