Angular 创建一个订阅,该订阅一旦捕获了有效的authState,就会停止";投票";
是否可以创建一个订阅,尝试重复获取用户的身份验证状态,直到Angular 创建一个订阅,该订阅一旦捕获了有效的authState,就会停止";投票";,angular,typescript,ngrx,Angular,Typescript,Ngrx,是否可以创建一个订阅,尝试重复获取用户的身份验证状态,直到user!=null,一旦出现这种情况,它将停止: ngOnInit() { this.isMobile = this.breakpointObserver.observe([Breakpoints.Handset]); this.authSubscription = this.afAuth.authState.subscribe(user => { if(user) { localS
user!=null
,一旦出现这种情况,它将停止:
ngOnInit() {
this.isMobile = this.breakpointObserver.observe([Breakpoints.Handset]);
this.authSubscription = this.afAuth.authState.subscribe(user => {
if(user) {
localStorage.setItem('uid', user.uid);
this.store.dispatch(userActions.getData());
}
})
}
控制台输出如下,导致浏览器崩溃:
我的行动如下:
@Effect()
getData$ = this.actions$.pipe(
ofType(UserActions.getData),
switchMap(() => {
return this.userService.getUserById(localStorage.getItem('uid')).pipe(
map(
(data: IUser) => UserActions.dataReceived({ payload: UserService.parseData(data) })
)
);
}
)
);
您可以结合使用
takeUntil()
运算符和interval()
我更喜欢这个解决方案,因为你没有一个接一个地触发请求1,你会在两者之间留出一段时间。谢谢,你能发布一个代码示例吗?一旦检索到数据,它将如何处理取消订阅请求的问题我在这里看不到任何轮询?这是导致这些问题的实际代码吗?那么,您的代码中的其他地方一定有问题,因为
authState
的行为不是这样的。请出示一个。或者更确切地说,我的意思是,如果你不是故意轮询数据,它不应该这样做。