Я пытаюсь создать http-перехватчик, который ожидает отправки сетевых запросов, пока onlinePipe
не вернет true
.Проблема, с которой я сталкиваюсь на данный момент, заключается в том, что я не могу найти решение, которое ожидает возврата сетевого запроса до тех пор, пока пользователь не вернется в онлайн.
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, } from '@angular/common/http';
import { Observable, BehaviorSubject } from 'rxjs';
import { NetworkStatusService } from '../services/networkStatus.service';
@Injectable()
export class OfflineRequestInterceptor implements HttpInterceptor {
constructor(
private networkStatusService: NetworkStatusService,
) {
}
onlinePipe = this.networkStatusService.Online;
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const returnedRequest = new BehaviorSubject<Observable<HttpEvent<any>>>(null);
this.onlinePipe.subscribe((online) => {
if (online) {
returnedRequest.next(next.handle(request));
}
});
return returnedRequest.value;
}
}
Какупомянуто здесь Я мог бы попытаться реализовать какую-то схему слияния.К сожалению, я не смог придумать подобное решение, используемое в этой ситуации.