Как я могу сделать наблюдаемый выброс только последние значения, а не прошлые значения - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть ConnectableObservable, который является частью BehaviourSubject.

question$: ConnectableObservable<Result>;
private questionSubject: BehaviorSubject<Result>; 

this.questionSubject = new BehaviorSubject<Result>(new Result('initial',{}));
this.question$ = (this.questionSubject.asObservable()).pipe(publish()) as ConnectableObservable<Result>;

Я использую метод next для emit значений при получении ответа от сервера.

this.questionSubject.next(new Result(response.result,getQuestionResponse));

Похоже, что Subject также излучает прошлые значения.

    jsonQuestion response:  {"question-id":"78830909-b23e-4345-bc69-63f3ce039b20",...} //SUBJECT SENDS THIS
question-details.component.ts:369 got stream value  Result {result: "success", additionalInfo: "{"question-id":"78830909-b23e-4345-bc69-63f3ce039b…2-ae23-f284213ff80a"},"is-question-creator":true}"}// OBSERVABLE RECEIVED THIS
... AND THE SAME TRACE COMES AGAIN!!
question-details.component.ts:369 got stream value  Result {result: "success", additionalInfo: "{"question-id":"78830909-b23e-4345-bc69-63f3ce039b…2-ae23-f284213ff80a"},"is-question-creator":true}"}

Почему Observable отправляет несколько значений. Как я могу сделать так, чтобы он отправлял только последнее значение?

1 Ответ

0 голосов
/ 05 ноября 2019

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

Вы можете иметь несколько подписок, буквально подписываясь несколько раз, или не выбрасывая подписки надлежащим образом.

Мне бы хотелось, чтобы ваши подписки были более конкретными. : -)

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