В Angular 7 я использую HttpInterceptor для получения токена Bearer, который необходимо добавить в качестве заголовка к любым вызовам API (например, getOnLoadData()). Всякий раз, когда я пытаюсь выполнить вызов getOnLoadData(), перехватчик вызывается успешно, но значение токена продолжает возвращаться как нулевое, поскольку оно выполняется до завершения перехватчика.
Я пытаюсь использовать async/await, чтобы сделать вызов асинхронным, но похоже, что я делаю это неправильно, и я не могу понять, где ошибка. Я довольно новичок в Angular. Я искал довольно много разных примеров, но не могу понять это.
Перехватчик HTTP
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
});
}