І спостережуване, і тематичне є спостережуваними засобами, які спостерігач може відстежувати. але обидва вони мають деякі унікальні характеристики. Далі існує всього 3 типи предметів, кожен з яких знову має унікальні характеристики. давайте спробуємо зрозуміти кожен із них.
ви можете знайти практичний приклад тут, на stackblitz .
(Вам потрібно перевірити консоль, щоб побачити фактичний вихід)
Observables
Вони холодні: Код виконується, коли у них є хоча б один спостерігач.
Створює копію даних: Спостерігається створює копію даних для кожного спостерігача.
Односторонній: спостерігач не може присвоїти значення спостережуваному (походження / головний).
Subject
Вони гарячі: код виконується, а значення транслюється, навіть якщо спостерігача немає.
Дані про спільний доступ : однакові дані діляться між усіма спостерігачами.
двонаправлений: спостерігач може призначити значення спостережуваному (походження / головний).
Якщо ви використовуєте тему, то ви пропускаєте всі значення, які транслюються перед створенням спостерігача. Отож тут виходить Replay Subject
ReplaySubject
Вони гарячі: код виконується, а значення отримують трансляцію, навіть якщо спостерігача немає.
Дані про спільний доступ : однакові дані діляться між усіма спостерігачами.
двонаправлений: спостерігач може призначити значення спостережуваному (походження / головний). плюс
Повторіть потік повідомлень: Незалежно від того, коли ви підписуєте тему повторного відтворення, ви отримаєте всі трансляційні повідомлення.
У темі та предметі відтворення ви не можете встановити початкове значення для спостережуваного. Отож, тут з'являється тема поведінки
BehaviorSubject
Вони гарячі: код виконується, а значення отримують трансляцію, навіть якщо спостерігача немає.
Дані про спільний доступ : однакові дані діляться між усіма спостерігачами.
двонаправлений: спостерігач може призначити значення спостережуваному (походження / головний). плюс
Повторіть потік повідомлень: Незалежно від того, коли ви підписуєте тему повторного відтворення, ви отримаєте всі трансляційні повідомлення.
Ви можете встановити початкове значення: Ви можете ініціалізувати спостережуване зі значенням за замовчуванням.