错误:效果已分派无效动作:未定义

时间:2019-05-24 05:00:14

标签: javascript angular typescript ngrx ngrx-effects

我正在尝试为自己的动作写一个效果。它有2种服务方法:内部为getData()checkToken()

它将引发错误:

  

“错误错误:影响“ IndexEffects.loginStatusValidate $”调度了无效操作:未定义“

我该怎么办?

 @Effect()
  loginStatusValidate$: Observable<Action> = this.actions$.pipe(
    ofType(IndexActionTypes.LoginStatusValidate),
    switchMap(() =>
      this.authService.getData().pipe(
        map(oldToken => {
          if (oldToken) {
            console.log("oldToken exsits");
            this.authService.checkToken().subscribe((newToken) => {
              console.log(newToken);
              // Throw error if I try to dispatch action here
              return new LoginStatusValidateSuccess(newToken);
            });
             // It's fine if I just dispatch action here
             //return new LoginStatusValidateSuccess('');

          } else {
            return new LoginStatusValidateError();
          }
        })
      )
    )
  );

 getData() {
    return of(localStorage.getItem('ACCESS_TOKEN'));
  }
 checkToken(){
      // access api refresh token 
      return of("newToken");

  }

1 个答案:

答案 0 :(得分:1)

问题出在this.authService.checkToken().subscribe((newToken) => {上,这样做不是在返回任何东西,而是在返回undefined

您已订阅,相反,您必须返回一系列操作,就像使用this.authService.getData().pipe一样。