我怎样才能让一个可观察的只发出最新的价值而不是过去的价值

How can I make an observable emit only latest value and not past values

我有一个 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 发送多个值。我怎样才能让它只发送最新的值?

当您看到从 Subject 或 BehaviorSubject 发出多条相同的消息时,问题可能是您有多个订阅。

您可以通过多次订阅或不适当地处理订阅来拥有多个订阅。

我必须查看您的订阅才能更具体。 :-)