Я добавил перехватчик для моих HTTP-запросов, где я должен использовать токен доступа моего пользовательского экземпляра.В моем компоненте приложения я инициализирую моего пользователя:
app.component.ts
private async restoreUser(): Promise<UserModel | any> {
// ... some view stuff
return this.userService.restore()
// login instance could be found
.then(async () => {
// ... some view stuff
})
// local storage is empty -> login is necessary
.catch(async () => {
// ... some view stuff
this.subscription = this.networkSrv.getNetworkStatus()
.subscribe((status: ConnectionStatus) => {
if (status === ConnectionStatus.Online) {
// ... some view stuff
} else {
// ... some view stuff
}
});
});
}
http.interceptor.ts
return this.userSrv.user.pipe(
map((user: UserModel) => request.clone(
{setParams: {'access-token': user.accessToken}}
)),
mergeMap(request => next.handle(request))
);
Теперь я хотел бы сделатьзапрос по инициализации моего приложения.Проблема в том, что пользовательский экземпляр пуст и приложение выдает ошибку.Есть ли способ сделать что-то вроде await
->, чтобы пользовательский экземпляр был установлен?
Пример:
this.transmissionSrv.restoreQueue().then((projects: ProjectModel[]) => {
this.transmissionSrv.transmitProjects(projects, true).subscribe(console.log);
});
В настоящее время я использую setTimeout
-метод, ноэто не так, как я должен это делать, верно?Кроме того, извините за непоследовательность при использовании Observer;Ionic часто использует Promises (?)