如何仅发出一个http请求,但多次订阅该服务?
文档指出它们被多次调用:
const req = http.get<Heroes>('/api/heroes');
// 0 requests made - .subscribe() not called.
req.subscribe();
// 1 request made.
req.subscribe();
// 2 requests made.
资料来源:https://angular.io/guide/http#making-a-delete-request(略有下降)。
有没有办法使http请求仅执行一次?
背景:我正在提供一项服务,该服务检查请求是否相同,如果是,则返回最后一个observable
。现在,如果两次提出请求,则“优化”已过时。
所有相关答案均针对Angular
答案 0 :(得分:0)
Based on comments I solved it like this:
this.lastObservable = new Observable(observe => {
this.http.get(url).subscribe(
result => {
// observable execution
observe.next(result)
},
error => {
observe.error(error)
},
() => {
observe.complete();
}
);