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这个。
我看到已经有很多关于这个问题的问题,但仍然找不到正确的解决方案。
我在组件中有一个用于 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这个。