Observable can provide a stream of data, also can filter the results and you can unsubscribe. It is not possible to do with Promises.
Observable can return a value synchronously or asynchronously. Promise is always asynchronous
const myPromise = new Promise(resolve => {
setTimeout(() => {
resolve('dog');
}, 100);
});
myPromise.then(result => {
console.log('promise: ', result);
})
const myObservable = new Rx.Observable(observer => {
setTimeout(() => {
observer.next('dog');
observer.next('cat');
observer.next('bird');
}, 100);
});
const subscription = myObservable
// .filter(result => result === 'bird')
.subscribe(result => {
console.log('observable: ', result);
});
// subscription.unsubscribe();