我正在使用来自 Visual Studio 模板的默认客户端身份验证服务。
有一个打字稿 AuthorizeService 有一个名为 isAuthenticated 的函数,它调用下面的函数并检查它是否为空。
获取用户函数:
public getUser(): Observable<IUser> {
return concat(
this.userSubject.pipe(take(1), filter(u => !!u)),
this.getUserFromStorage().pipe(filter(u => !!u), tap(u => this.userSubject.next(u))),
this.userSubject.asObservable());
}
在上述函数上调用 .subscribe 时。订阅被调用了 3 次。大概对于 concat 函数中的每个 observable 。使用上面的 getUser,我希望 subscribe 被调用一次。我将如何实现这一目标?
我尝试将上面的内容转换为返回一个值但由于某种原因没有成功的嵌套承诺,在返回结果后,即使用户存在于会话存储中,它也会返回 resolve(null)