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