有一些服务。某些组件通过此服务获取实体。该组件多次获取实体。
当组件再次接收到实体时,将启动 getEntity() 和 getToken() 方法。然而,会话令牌始终是相同的。
我需要方法 getToken 仅启动一次。此后,组件可以重复运行 getEntity() 方法。请帮我做这个。
@Injectable()
export class SomeService {
getToken() {
return inject(TokenService).get();
}
getEntity() {
return this.getToken().pipe(
switchMap(token => inject(EntityService).get(token))
);
}
}
PS: 有很多组件使用此服务,因此我不想将令牌检索放入每个组件中。
您可以尝试
share
停止多次获取令牌,
@Injectable()
export class SomeService {
token$ = getToken();
getToken() {
return inject(TokenService).get().pipe(share());
}
getEntity() {
return this.token$.pipe(
switchMap(token => inject(EntityService).get(token))
);
}
}