如何停止或等待其他api调用,直到l令牌存储在angular12中



嗨,我从我的app.component调用一个令牌api。我从app.componnt调用它的原因是,我没有任何登录页面。获取访问令牌后,im将其存储在本地存储中。问题是令牌没有附加到其他api的http头上。它们是从其他组件异步调用的。所以他们不会等待我的令牌api执行。

但当我再次尝试调用它时,它运行得很好,正如预期的那样。我的要求是,在执行令牌api、之后,应该调用其他请求

我试过很多东西,比如delay((、timer((,但都不起作用。请帮我

Httpinterceptor

intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
request = request.clone({
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Token': localStorage.getItem('accessToken') || '',
})
})
return next.handle(request)
}

您可以使用tap((。我正在canActivate((中的Authgard中使用此功能。它将等待,直到您的服务加载并在本地存储数据。

canActivate(): Observable<boolean> {
return this.yourService.yourFunction().pipe(
tap(yourBoolean => {
if (!yourBoolean ) {
this.router.navigate(['/otherpage']);
}
}),
);
}

->https://rxjs.dev/api/operators/tap

最新更新