В Angular 7 я использую HttpInterceptor для получения токена Bearer, который необходимо добавить в качестве заголовка для любых вызовов API (например, getOnLoadData ()). Всякий раз, когда я пытаюсь выполнить вызов getOnLoadData (), перехватчик вызывается успешно, но значение токена продолжает возвращаться как ноль, потому что оно выполняется до завершения перехватчика.
Я пытаюсь использовать async / await сделать вызов асинхронным, но похоже, что я делаю это неправильно, и я не могу понять, где ошибка. Я довольно новичок в Angular. Я искал довольно много разных примеров, но не могу понять.
HTTPInterceptor
intercept(req: HttpRequest<any>, next: HttpHandler) {
return from(this.handle(req, next))
}
async handle(req: HttpRequest<any>, next: HttpHandler) {
const result = await this.getBearerToken();
const tokenizedReq = req.clone({
setHeaders: {
Authorization: `Bearer ${result}`
}
})
return next.handle(tokenizedReq).toPromise();
}
Вызов API
async getOnLoadData() {
await this.tokenInterceptorService.getBearerToken()
return this.httpClient.get('/initialloaddata', {
headers
});
}