Многие не могут объяснить разницу между субъектом и субъектом поведения, когда их спрашивают в интервью.

Для разработчиков Angular разница между Subject и BehaviorSubject — еще один любимый вопрос, который задают интервьюеры, и мы часто не можем ответить на основное различие.

Мы говорим, что они одинаковы, за исключением того, что BehaviourSubject может выдавать некоторое начальное значение, тогда как Subject не может. Мы думаем, что закончили, но на самом деле мы уменьшили наши шансы пройти собеседование. Итак, давайте разгадаем тайну!

Что такое Субъект?

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

Что такое BehaviorSubject?

Его особый тип субъекта, испускающий начальное значение, где ранний, а также поздний подписчик получит последнее испущенное значение.

Теперь разница ясна. Давайте посмотрим.

  • Создал тему.
  • Выявлено наблюдаемое от Субъекта.
  • подписка1 является ранним подписчиком, так как субъект выдает значение после него.
  • подписка2 является поздним подписчиком, так как субъект выдает значение перед ним.

Посмотрим на результат.

Обучение

В случае Subject ранний подписчик получил значение, тогда как поздний подписчик не получил значение.

Теперь давайте изменим Subject на BehaviorSubject с пустым начальным значением emit.

Мы видим три вывода консоли. Давайте разбираться, что происходит.

  • BehaviorSubject выдает пустое значение.
  • Первая (ранняя) подписка получила длительное значение, выданное субъектом как пустое и выведенное на консоль.
  • Субъект выдал следующее значение как «Первый», и мы ввели подписку с поздним подписчиком2.
  • И ранний, и поздний подписчики получали значение, испускаемое субъектом, и выводили его на консоль.

Обучение

В случае BehaviorSubject он создается путем предоставления начального значения, и все подписчики (ранние или поздние) получат последнее отправленное значение.

Я надеюсь, что это довольно ясно.

Я создал курс Angular по Udemy, который охватывает множество практических проблем и решений в Angular, включая эту. Это может стать ступенькой в ​​вашем профессиональном путешествии по Angular. Пожалуйста, посмотрите.

Вы также можете посмотреть/подписаться на мой бесплатный канал YouTube.

Пожалуйста, подпишитесь/подпишитесь/поставьте лайк/хлопайте в ладоши.