Angular 12 - 在拦截器 Typescript 中承诺同步 class
Angular 12 - promise synchronious in interceptor Typescript class
我在我的 Angular 12 应用程序中使用这个 class:
@Injectable()
export class AppHttpInterceptor implements HttpInterceptor {
constructor(protected authService: AuthService, private router: Router) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log("intercepted request in AppHttpInterceptor#intercept");
const token = this.authService.getToken().then(response => {
const token = response;
let authReq = req.clone({
setHeaders: {
'Content-Type': 'application/json',
'x-auth-token': token
}
});
return next.handle(authReq);
})
}
}
我的问题 class 是我应该 return 一个 Observable - 我在承诺中这样做但是我必须在外面做什么或者无论如何如何解决这个问题?
您可以为此使用 rxjs from operator。
return from(this.authService.getToken()).pipe(
switchMap((token) => {
let authReq = req.clone({
setHeaders: {
'Content-Type': 'application/json',
'x-auth-token': token
}
});
return next.handle(authReq);
})
);
我在我的 Angular 12 应用程序中使用这个 class:
@Injectable()
export class AppHttpInterceptor implements HttpInterceptor {
constructor(protected authService: AuthService, private router: Router) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log("intercepted request in AppHttpInterceptor#intercept");
const token = this.authService.getToken().then(response => {
const token = response;
let authReq = req.clone({
setHeaders: {
'Content-Type': 'application/json',
'x-auth-token': token
}
});
return next.handle(authReq);
})
}
}
我的问题 class 是我应该 return 一个 Observable
您可以为此使用 rxjs from operator。
return from(this.authService.getToken()).pipe(
switchMap((token) => {
let authReq = req.clone({
setHeaders: {
'Content-Type': 'application/json',
'x-auth-token': token
}
});
return next.handle(authReq);
})
);