有角度的多个http.get请求

时间:2018-07-25 07:48:27

标签: angular angular-http angular-observable

如何仅发出一个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

1 个答案:

答案 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();
          }
        );