Требуется ли (или рекомендуется) в качестве наблюдателя для завершения Observable.create () - PullRequest
0 голосов
/ 08 февраля 2019

При вызове Observable.create, после выполнения всех вызовов Наблюдатель.next (), рекомендуется ли вызывать Наблюдатель.complete ()?Точно так же, если мы не делаем, этот метод вызывается автоматически?И запускается ли код после полного метода?

Я заметил еще один вопрос, похожий на этот, но ответа мне было недостаточно, чтобы быть уверенным. Что делает Observer.complete ()?

Вот простой пример,

return Observer.create(observer => {
  observer.next(1);
  observer.next(2);
  observer.complete();

  console.log("some more code");
});

1 Ответ

0 голосов
/ 08 февраля 2019

При вызове Observable.create, после выполнения всех вызовов Наблюдатель.next () рекомендуется вызвать Наблюдатель.complete ()

Можно ответить только с "это зависит».Generelly yes , если вы знаете, что больше не будет уведомлений, полезно сообщить своим подписчикам об этом обстоятельстве.Вам бы не понравилось, если бы ваш любимый YouTuber прекратил показывать видео, не сообщив вам об этом.

Однако complete - это больше, чем просто информация.Это эффективно закрывает ваши наблюдаемые и таким образом запрещает вам отправлять любые более регулярные уведомления.Если вы не уверены, что отправляете уведомления в будущем, не звоните complete.После вызова tehre больше не возвращается.

Точно так же, если мы этого не сделаем, этот метод вызывается автоматически?

Нет.Вы получаете долгоживущую Observable, если никогда не вызываете complete.

И запускается ли код после полного метода?

Да, но как уже упоминалось, вы не можете отправлять больше уведомлений своему подписчику.

В этот момент я, вероятно, должен уведомить вас о наблюдаемом контракте .На мой взгляд, это довольно сложное чтение (много незнакомых терминов), но для полного понимания ReactiveX.

...