Angular Observable 偶尔订阅多次

Angular Observable subscribes multiple times occasionally

我看到已经有很多关于这个问题的问题,但仍然找不到正确的解决方案。

我在组件中有一个用于 http 请求和订阅的服务。

有时订阅几次并发送几个http请求。

有时它工作正常所以我不确定它取决于它是否被多次调用。

第一个是检查选项。 (我不确定这是必需的还是因为 CORS 政策。有没有办法避免这种情况?)

然后接下来的两个请求是相同的 return 值两次。

这对我来说是个大麻烦

这是我的服务和组件代码。

service.ts

getPartners(): Observable<Partner[]> {
    return this.http.get<Partner[]>(SERVER_API_URL + `api/partners`);
  }

component.ts

this.partnerService.getPartners()
    .pipe(first())
    .subscribe(partners => {
      this.partners = partners;
    });

我该如何解决这个问题? 提前致谢。

第一次来电是因为您的要求不简单。一个简单的请求是那些符合以下条件的人:

  • GET / HEAD / POST
  • 仅对 header 使用几个值:例如。 Content-type、Accept-Language、接受等。(参见互联网上的列表)
  • 未使用 ReadableStream。
  • 等...

这意味着,例如,如果您(典型情况)通过在 HTTP 请求中注入授权 header 来使用身份验证,则此调用将变成一个不简单的调用,并会触发之前的预检调用原始的(这是 OPTIONS 调用)。这是由浏览器自动触发的,你不能stop/skip这个。