ค้นหาเว็บไซต์

javascript - ข้อผิดพลาด: เอฟเฟกต์ส่งการดำเนินการที่ไม่ถูกต้อง: ไม่ได้ระบุค่า


ฉันกำลังพยายามเขียนเอฟเฟกต์สำหรับแอคชันของฉัน มันมีเมธอดของเซอร์วิส 2 เมธอด: getData() และ checkToken() อยู่ข้างใน

มันจะเกิดข้อผิดพลาด:

"ข้อผิดพลาด ERROR: เอฟเฟกต์ '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

ปัญหาคือ this.authService.checkToken().subscribe((newToken) => { โดยการทำแบบนี้คุณไม่ได้ส่งค่ากลับอะไรเลย คุณกำลังส่งค่า undefined กลับ

คุณกำลังสมัครสมาชิก แทนที่คุณต้องส่งกลับสตรีมของการกระทำ เหมือนที่คุณทำกับ this.authService.getData().pipe