A Subscription
является результатом добавления Observer
к Observable
. Это объект, который можно использовать только для unsubscribe
из этой наблюдаемой. В случае отказа от подписки Наблюдатель не получит никаких дополнительных выбросов.
Observer
(который вы можете называть подпиской) - это то, что создается при вызове Observable.subscribe(next, error, complete)
. Вы получите Observer
при реализации собственного Observable с Observable.create()
. В противном случае, вы не получите его. Observer содержит функции next(value => void)
, error(error => void)
и complete(_ => void)
, которые используются Observable для передачи сообщений об изменениях состояния.
Обмен информацией происходит только в одном направлении. The Observable всегда излучает Observer, а не наоборот.
Теперь на ваши вопросы:
Сохраняет ли Observable ссылки на свои подписки?
Нет, он хранит ссылки на свои Observers
, но это, вероятно, то, что вы имеете в виду.
Содержит ли подписка ссылку на наблюдаемый объект, который ее создал?
Нет, только функция, которая используется для отмены подписки на эту заметку. Observer
также не имеет ссылки на Observable, на которое он подписан.
Наблюдаемая "помещает" данные в свои подписки или подписка "опрашивает" свои наблюдаемые?
Наблюдаемые "помещает" (лучше слово "испускает") значения в свои Observers
. никогда не опрашивается из Observable, так как это нарушит фундаментальный принцип RxJS. Единственным исключением будет BehaviourSubject.getValue()
, но вы не должны использовать это в большинстве случаев!
Как происходит обмен информацией?
Это зависит от наблюдаемого. Как правило, Observable
содержит список всех своих Observers
и вызывает их функции next()
всякий раз, когда выдается новое значение, функцию error()
при возникновении ошибки и функцию complete()
, когда она достигает своего состояния завершенности. .