是否可以创建一个订阅,尝试重复获取用户的身份验证状态,直到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) })
)
);
}
)
);
答案 0 :(得分:1)
您可以结合使用takeUntil()
运算符和interval()
。
我更喜欢这种解决方案,因为您不会在另一个请求之后触发请求1,因此您会在这之间留出一些时间。