【发布时间】:2019-11-04 17:29:35
【问题描述】:
我有一个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 发送多个值。我怎样才能让它只发送最新的值?
【问题讨论】:
-
BehaviorSubject就是这样做的。它总是首先发出缓冲的值。 -
也许您需要改用主题?
-
您是否有多个订阅 this.question$?生成这些消息的详细代码是什么样的?
-
DeborahK - 你这个天才!问题确实是多个订阅。我的组件将订阅,但我没有在
onDestroy上取消订阅。为了大家的利益,您能否提交一个答案并解释为什么多个订阅是问题? -
完成......................
标签: rxjs angular6 angular2-observables rxjs-observables