首页 > 解决方案 > Angular 多个 http.get 请求

问题描述

我怎样才能只发出一个 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

标签: angularangular-httpangular-observable

解决方案


根据评论,我这样解决了:

this.lastObservable = new Observable(observe => {
        this.http.get(url).subscribe(
          result => {
            // observable execution
            observe.next(result)
          },
          error => {
            observe.error(error)
          },
          () => {
            observe.complete();
          }
        );

推荐阅读