Нужно ли отписываться от Observable.of? - PullRequest
4 голосов
/ 28 апреля 2019

Итак, в принципе, новичок в rxjs и хотел знать,

Нужно ли мне отписаться от Observable.of (данные) или в более новых версиях rxjs, просто (data)?

т.е.

import {of} from 'rxjs';
const sub = of(data).subscribe();

это необходимо?

sub.unsubscribe();

Ответы [ 2 ]

5 голосов
/ 28 апреля 2019

Существуют конечные и бесконечные Наблюдаемые, как лучше всего описано в этой статье .

Конечные Наблюдаемые

завершаются в определенный обозримый период времени, например, сетевой запрос илиВаш Observable.of() звонок.

Бесконечные наблюдаемые

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

Ответ

Хотя нет реальной необходимости отписываться от конечных Observables, рекомендуется отписываться от всех наблюдаемых, поскольку вы обычно не знаете, если это так.действительно конечно.

Чтобы не накапливать несколько подписок в вашем коде, лучше всего использовать расширенные функции rxjs, как показано в этой статье .

Почему я должен отписаться от рассылки Observable ?

Observable - это поток событий.Вы можете подписаться на этот поток и получать обновления, так как поток генерирует события с помощью функции subscribe

.subscribe(
  onNext => {
    // Called if there was a normal event, e.g. data is emitted
  },
  onError => {
    // Called if there was an Error
  },
  onComplete => {
    // Called if the event stream ends OR an Error is encountered
  }
)

Каждая подписка занимает место в памяти и до тех пор, пока Observable не завершит, подписки не будутзавершить (но все равно будет получать обновления с функцией onNext(), даже если, например, в angular компонент уничтожается).Чтобы предотвратить непредвиденное поведение и утечки памяти, вы должны отписаться. Нажмите, чтобы прочитать

1 голос
/ 29 апреля 2019

Более конкретный ответ, касающийся RxJS, заключается в том, что вы не отмените подписку на of, потому что это Observable, который выдает уведомление complete, когда оно завершено, испуская next значений, которые вы ему дали.

Например,с этой наблюдаемой of(1) порядок уведомлений следующий:

  1. next уведомление со значением 1.
  2. complete уведомление, которое сообщает подписчикам, что этот источникObservable выполняется с излучением чего угодно.

Subscriber объекты после получения complete уведомления отписываются автоматически:

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