Javascript Uncaught(承诺中):TypeError:您使用Observable.from()提供

Javascript Uncaught(承诺中):TypeError:您使用Observable.from()提供,javascript,angular,Javascript,Angular,我在下面有一个函数,它将结果作为一个承诺返回,并希望将其转换为observable以进一步处理它 isAuthenticated(): () => Promise<boolean> { return async () => { const payload: any = JSON.parse(sessionStorage.getItem('token')); const isExpired = payload?.token ? this.helper.i

我在下面有一个函数,它将结果作为一个承诺返回,并希望将其转换为observable以进一步处理它

isAuthenticated(): () => Promise<boolean> {
  return async () => {
    const payload: any = JSON.parse(sessionStorage.getItem('token'));
    const isExpired = payload?.token ? this.helper.isTokenExpired(payload.token) : true;
    const isAuthenticated = await this.nbAuthService.isAuthenticated().toPromise();
    return !isExpired && isAuthenticated;
  };
}
isAuthenticated():()=>承诺{
返回异步()=>{
const payload:any=JSON.parse(sessionStorage.getItem('token');
const isExpired=payload?.token?this.helper.isTokenExpired(payload.token):true;
const isAuthenticated=等待此.nbAuthService.isAuthenticated().toPromise();
return!isExpired&&isAuthenticated;
};
}
以及可观测函数:

canActivate(): Observable<boolean> {
  const observable = from(this.authService.isAuthenticated());
  return observable.pipe(
    tap(authenticated => {
      if (!authenticated) {
        this.router.navigate(['/auth/sign-in']);
      }
    }),
  );
}
canActivate():可观察{
const observable=from(this.authService.isAuthenticated());
可观测返回管(
点击(已验证=>{
如果(!已验证){
this.router.navigate(['/auth/sign-in']);
}
}),
);
}
它抛出一个错误:

错误:未捕获(承诺中):类型错误:您提供了“()=> 对象(tslib_uu网页包_u导入的_模块_u0_uu[“u等待者”])(此,无效0, 空0,函数*(){ const payload=JSON.parse(sessionStorage.getItem('token'); const isExpired=(有效负载===null | |有效负载===void 0?void 0:payload.token)?this.helper.isTokenExpired(payload.token) :正确; const isAuthenticated=生成此.nbAuthService.isAuthenticated().toPromise(); return!isExpired&&isAuthenticated

大宗报价

好的,您如何更改isAuthenticated函数以返回如下所示的可观察值

isAuthenticated():Observable<boolean> {


return  from(this.nbAuthService.isAuthenticated().toPromise())
.pipe(
    map(isAuthenticated=>{ 
    const payload: any = JSON.parse(sessionStorage.getItem('token'));
    const isExpired = payload?.token ? this.helper.isTokenExpired(payload.token) : true;
    return !isExpired && isAuthenticated); })
    
    };
 }
isAuthenticated():可观察{
从(this.nbAuthService.isAuthenticated().toPromise()返回)
.烟斗(
映射(已验证=>{
const payload:any=JSON.parse(sessionStorage.getItem('token');
const isExpired=payload?.token?this.helper.isTokenExpired(payload.token):true;
return!isExpired&&isAuthenticated);})
};
}

返回的是Promise not Observable。
Promise
在您的原始代码中有以下内容。nbAuthService.isAuthenticated().toPromise();…nbAuthService是不同的服务吗?我的错..在这种情况下,您可以简单地让isAuthenticated函数返回Observable..参见上文