簡體   English   中英

Uncaught (in promise): TypeError: You provided using Observable.from()

[英]Uncaught (in promise): TypeError: You provided using Observable.from()

我在下面有一個函數,它將結果作為承諾返回,並希望將其轉換為 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;
  };
}

和 Observable 函數:

canActivate(): Observable<boolean> {
  const observable = from(this.authService.isAuthenticated());
  return observable.pipe(
    tap(authenticated => {
      if (!authenticated) {
        this.router.navigate(['/auth/sign-in']);
      }
    }),
  );
}

它拋出一個錯誤:

錯誤:未捕獲(承諾):類型錯誤:您提供了 '() => Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__awaiter"])(this, void 0, void 0, function* () { const payload = JSON.parse(sessionStorage.getItem ('token')); const isExpired = (payload === null || payload === void 0 ? void 0 : payload.token) ? this.helper.isTokenExpired(payload.token) : true; const isAuthenticated = yield this.nbAuthService.isAuthenticated().toPromise(); return !isExpired && isAuthenticated;

塊引用

好的,您如何更改 isAuthenticated 函數以返回如下所示的 observable

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); })
    
    };
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM