简体   繁体   English

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

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

I have a function below which returns the result as a promise and want to convert it to observable to process it further.我在下面有一个函数,它将结果作为承诺返回,并希望将其转换为 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;
  };
}

And the Observable function:和 Observable 函数:

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

It throws an error:它抛出一个错误:

Error: Uncaught (in promise): TypeError: You provided '() => 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;错误:未捕获(承诺):类型错误:您提供了 '() => 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;

Blockquote块引用

ok how about you change your isAuthenticated function to return an observable like below好的,您如何更改 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.

相关问题 如何在使用Observable.from(<Promise>)并在Observable中捕获错误时处理`UnhandledPromiseRejectionWarning` - How to handle `UnhandledPromiseRejectionWarning` when using Observable.from(<Promise>) and catching error in the Observable Observable.from([true])有什么作用? - What does Observable.from([true]) do? Rxjs 使用 Observable.from() 字符串并防止 Observable 被多次创建 - Rxjs using Observable.from() string and prevent Observable being created many times RxJS:Observable.create() 与 Observable.from() - RxJS: Observable.create() vs. Observable.from() Uncaught (in promise) TypeError: _this is not a function - Uncaught (in promise) TypeError: _this is not a function 未捕获(承诺)类型错误 - Uncaught (in promise) TypeError 您在需要流的地方提供了一个无效的对象。 你可以提供一个 Observable、Promise、Array 或 Iterable - You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable 未捕获(承诺)类型错误: - Uncaught (in promise) TypeError: 未捕获(承诺)TypeError:$不是函数 - Uncaught (in promise) TypeError: $ is not a function 未捕获(承诺)TypeError:这是未定义的 - Uncaught (in promise) TypeError: this is undefined
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM