【发布时间】:2020-08-25 06:04:49
【问题描述】:
我的代码如下所示:
userContext: UserContext;
userContext$ = this.http.get<UserContext>("assets/api/userContext.json", {}).pipe(
shareReplay(1),
tap((val: UserContext) => {
this.userContext = val;
console.log(this.userContext);
})
);
userAnnouncements$ = this.http.post<Announcement>(this.userAnnouncementsService,
{
countryCode: this.userContext.countryCode,
companyGroupId: this.userContext.companyGroupId,
}
);
我们可以清楚地看到第二个服务 (userAnnouncements$) 需要第一个服务 (userContext$) 接收到的值,因为它们是异步的,所以我的 userContext: UserContext;执行第二个服务时为空。
我还需要 userContext.companyCode 和 GroupId 以供将来调用,因此我需要一种方法将其保存在某个地方以供后续调用。
我尝试了解析器和 APP_INT... 但后来意识到这不是两个地方的正确目的。
【问题讨论】:
-
您的
userContext只被提取一次?如果是这样,您可以将其视为单例。 -
@VRoxa 是的,获取一次并用于所有后续调用,我猜谜题是关于如何\何时在进行其他调用之前获取它。
标签: angular typescript async-await rxjs observable