자바스크립트 에서는 동기와 비동기가 존재한다. 그중에서 비동기 처리를 위해서는 setTimeout,AJAX,event 등등.. 존재한다. 보통 이러한 비동기 처리를 위해서는 주로 Promise 를 사용했다.
그치만 promise나 callback은 단 하나의 data을 받고 종료되어 버리는 패턴을 가지고 있다. then(), catch()를 통해 데이터를 받고 끝나는 것이다. 하지만 데이터 들이 시간과 연계 되어 잇달아서 여러번 받아와야 하는 상황이 생긴다면? Promise로는 해결할 수 없다.
이럴때 쓰는것이 Observable이다. Observable은 중간에 취소가 가능하다.
promise에서는 결과에 대해서 resolve(), reject() 함수를 통해서 데이터를 전달할수 있다. resolve()는 성공 reject()는 실패 로 분기 처리가 가능하다.
Observer도 이것과 비슷한 것이 있다.
observer 객체에도 역시 데이터를 밀어 너어주는 next()함수 (= resolve), 에러가 났을 때 에러를 보내줄 수 있는 error()함수 (=reject) 마지막으로 데이터 스트림의 종료를 알려주는 complete()함수가 있다.
observer = {
next: function(data){},
error : function(err){},
complete: function(){}
}