Есть Observable, но пропускать данные нужно только тогда, когда значения другого Observable= true.
Пример - выполняю http запросы, а если токен невалиден, я блокирую выполнение запросов на момент, пока не получу новый токен.... при этом запросы не должны пропасть, как при filter, а просто подождать нового токена(тобеж значения другого Observable).
Как такое реализовать?
export class HttpServiceBase {
constructor(private tokenService: TokenService) {}
protected iAmWaitingForNewToken: BehaviorSubject<boolean> = new BehaviorSubject(false);
blockRequestsUntilTokenRefreshed(value: boolean) {
this.iAmWaitingForNewToken.next(value);
}
protected checkPipe<T>(source: Observable<T>) {
return source.pipe(
map((data) => {
return {
data: data,
hasError: false,
};
}),
catchError(async (err) => {
return { data: err.error, hasError: true };
})
);
}
protected processOptionsWithToken(options: object = {}) {
const auth = {
headers: new HttpHeaders().set(
'Authorization',
`Bearer ${this.tokenService.getAccessToken()}`
),
};
return {
...options,
...auth,
};
}
}
пример подключения
getWithToken$(url: string) {
return this.http
.get(this.hostUrl + url, this.processOptionsWithToken())
.pipe(this.checkPipe);
}