Tìm kiếm trang web

javascript - Lỗi: Hiệu ứng đã gửi một hành động không hợp lệ: không xác định


Tôi đang cố gắng viết một hiệu ứng cho hành động của mình. Nó có 2 phương thức dịch vụ: getData() và checkToken() bên trong.

Nó sẽ báo lỗi:

"LỖI Lỗi: Hiệu ứng \"IndexEffects.loginStatusValidate$\" đã gửi một hành động không hợp lệ: không xác định"

Tôi nên làm gì?

 @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");

  }

Câu trả lời #1

Vấn đề là this.authService.checkToken().subscribe((newToken) => {, với cách làm này bạn không trả về gì cả, bạn đang trả về undefined.

Bạn đang đăng ký, thay vào đó bạn phải trả về một luồng các hành động, giống như bạn làm với this.authService.getData().pipe.