Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 创建一个订阅,该订阅一旦捕获了有效的authState,就会停止";投票";_Angular_Typescript_Ngrx - Fatal编程技术网

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
的行为不是这样的。请出示一个。或者更确切地说,我的意思是,如果你不是故意轮询数据,它不应该这样做。