Наблюдатель является потребителем ценностей, поставляемых наблюдаемым.
Таким образом, в основном наблюдатель получает значения, испускаемые потоком.
A Подписка - это объект, который представляет собой ресурс, который можно использовать, как правило, выполнение наблюдаемого.
Подписка в основном только «факт» что некий наблюдатель в данный момент получает данные, при отмене подписки на подписку, и поток, и наблюдатель будет по-прежнему существуют, они просто не подключены больше.
В реальном мире метафора смешиваться с псевдо-кодом: газета
поток: Это было бы производство цепи газеты (involing издательской компании создание контента и типография печати бумага)
const newsPaper$ = Observable.interval(DAILY)
.switchMapTo(date => publishingCompany.createContent(date))
.switchMapTo(content => printingHouse.printPaper(content))
.publish()
.refCount();
Observer: Это будет читатель/получатель, который парень с халатом, который каждое утро берет газету в своем переднем дворе, чтобы прочитать ее.
const bathrobeGuy = {
next: newsPaper => readPaper(newsPaper),
error: errorMsg => complainAbout(errorMsg), // the bathrobe guy will be so angry, the he unsubscribes the paper
complete:() => subscribeToDifferentNewsPaper()
}
Подписка: Это газетная подписка - доставки мальчик бросает газету в каждый передний двор каждое утро.
// this will activate the "delivery boy"
const paperSubscription = newsPaper$.subscribe(bathrobeGuy);
отподписывание: Когда халат-парень решает не хочет бумаги больше, он может отказаться от подписки на бумаге и доставку, мальчик не будет поставлять бумаги больше. Однако наблюдатель (халат-парень) и газета-производство все еще существуют, но у них просто нет никаких отношений.
paperSubscription.unsubscribe();