Когда использовать Subject.prototype.asObservable ()
Цель этого состоит в том, чтобы предотвратить утечку «стороны наблюдателя» субъекта из API. В основном, чтобы предотвратить утечку абстракций, когда вы не хотите, чтобы люди могли «переходить» в конечную наблюдаемую область.
Вы никогда не захотите возвращать экземпляр Subject в вызывающий контекст. Это было бы в некотором роде возвращением отложенного объекта, а не обещания; и это оставило бы Предмет открытым для непредвиденного и искажающего использования. Таким образом, при экспонировании субъекта вы, возможно, захотите сначала преобразовать его в Observable.
Чтобы это работало, мы можем использовать метод экземпляра Rx.Observable.prototype.asObservable()
.
Сам объект является горячим / разделяемым , и он действует как мост / прокси между наблюдаемым источником и многими наблюдателями, позволяя нескольким наблюдателям совместно использовать одно и то же наблюдаемое выполнение.
Есть ли не Очевидное преимущество этого шаблона функции получения / фабрики?
Нет, совсем нет, так как вы создаете новую Observable с этим Субъектом в качестве источника, чтобы скрыть его от кода, который использует Observable.
Когда использовать asObservable () в rx js?