我怎样才能让一个可观察的只发出最新的价值而不是过去的价值
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 发出多条相同的消息时,问题可能是您有多个订阅。
您可以通过多次订阅或不适当地处理订阅来拥有多个订阅。
我必须查看您的订阅才能更具体。 :-)
我有一个 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 发出多条相同的消息时,问题可能是您有多个订阅。
您可以通过多次订阅或不适当地处理订阅来拥有多个订阅。
我必须查看您的订阅才能更具体。 :-)