문서의 이전 판입니다!
약속 대신에 관찰 대상을 사용하여 값을 비동기 적으로 전달할 수 있습니다. 마찬가지로, 관찰 가능 객체는 이벤트 핸들러를 대신 할 수 있습니다. 마지막으로 observables는 여러 값을 전달하기 때문에 어레이에서 빌드하고 작동 할 수있는 곳에 observables를 사용할 수 있습니다.
Observables는 이러한 각각의 상황에서 대체 기술과 다소 다르게 동작하지만 중요한 이점을 제공합니다. 다음은 차이점을 자세히 비교 한 것입니다.
옵서버블은 종종 약속과 비교됩니다. 주요 차이점은 다음과 같습니다.
// declare a publishing operation new Observable((observer) => { subscriber_fn }); // initiate execution observable.subscribe(() => { // observer handles notifications });
// initiate execution new Promise((resolve, reject) => { executer_fn }); // handle return value promise.then((value) => { // handle result here });
observable.map ((v) => 2 * v);
promise.then ((v) => 2 * v);
const sub = obs.subscribe (...); sub.unsubscribe ();
obs.subscribe (() => { throw Error('my error'); });
아동의 약속에 푸시 오류를 약속합니다.
promise.then (() => { throw Error('my error'); });
다음 코드 스니펫은 observables와 promise를 사용하여 같은 종류의 연산을 정의하는 방법을 보여줍니다.
| OPERATION | OBSERVABLE | PROMISE |
|---|---|---|
| Creation | new Observable((observer) => { observer.next(123); }); | new Promise((resolve, reject) => { resolve(123); }); |