【发布时间】:2019-01-31 06:18:31
【问题描述】:
我在两个单独的组件中调用了方法loadParticipant 两次,它几乎在同一时间进行,尽管将 Observable 保存在变量中,api 被多次调用。该解决方案适用于 AngularJs 和 Promises 调用,但现在我当然想使用 Observables :)
我尝试在map后添加debouncetime和share参数
return (this.loadParticipantObservable = this.sharedEndpoints.getParticipant().map((response) => {
this.loadParticipantObservable = null;
return (this.participant = response);
})).share().debounceTime(1000);
loadParticipant方法的实际代码
public loadParticipant(): Observable<DTO<PersonModel>> {
if (this.participant) {
return new BehaviorSubject<DTO<PersonModel>>(this.participant);
}
if (this.loadParticipantObservable) {
return this.loadParticipantObservable;
}
return (this.loadParticipantObservable =
this.sharedEndpoints.getParticipant().map((response) => {
this.loadParticipantObservable = null;
return (this.participant = response);
}));
}
示例我如何调用 loadParticipant 方法
this.sharedService.loadParticipant().subscribe((response: DTO<PersonModel>) => {
...
});
与此同时,Observable 不为空,代码进入此条件并执行
return this.loadParticipantObservable;
我在调试器中检查了它。
这只是返回我可观察的,但不幸的是,这段代码调用了更低的代码,返回了从后端调用真实端点的代码
【问题讨论】:
标签: angular typescript rxjs observable