RxJs: в чем разница между субъектами и наблюдаемой многоадресной рассылкой - PullRequest
0 голосов
/ 28 февраля 2019

Я изучаю RxJs уже пару недель, и я не могу понять, в чем именно заключается разница между предметами и многоадресной рассылкой.

Я нашел много источников, которые дифференцируют наблюдаемые с субъектами, но я не смог найти источник, который дифференцировал бы субъекты с многоадресными наблюдениями

Согласно моему пониманию ...

Многоадресная рассылка : разрешить совместное использование побочных эффектов несколькими подписчиками.

Субъекты : это наблюдаемая, которая разделяет один путь выполнения среди наблюдателей.

Мои вопросы ...

  • В чем разница, если оба делают одно и то же?
  • Когда следует использовать тему?
  • Когда следует использовать многоадресную рассылку?

Спасибо ..

1 Ответ

0 голосов
/ 02 марта 2019

По сути, «многоадресная рассылка» означает совместное использование одной подписки на источник, наблюдаемый среди нескольких наблюдателей.В RxJS это всегда выполняется с помощью оператора multicast(), который внутренне использует экземпляр субъекта.

Субъекты - это объекты, которые одновременно работают как в режиме наблюдения, так и в качестве наблюдателя.Поэтому, как правило, вы будете использовать субъекты для создания пользовательских событий, когда захотите:

const s = new Subject();
s.next();
s.complete();

... но вы можете использовать его, чтобы подписаться на другой наблюдаемый объект, а затем подписаться на этот предмет несколько раз, что одно и то же.как это делает многоадресная рассылка:

const s = new Subject();
const source = ... // Observable
source.subscribe(s);

s.subscribe(...);
s.subscribe(...);
s.subscribe(...);

Таким образом, существует только одна подписка на source и 3 подписки (на наблюдателей) на s, таким образом, вы осуществляете многоадресную рассылку с source на 3 наблюдателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...