Угловой HttpInterceptor ждет результата от подписки - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь создать 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;
  }
}

Какупомянуто здесь Я мог бы попытаться реализовать какую-то схему слияния.К сожалению, я не смог придумать подобное решение, используемое в этой ситуации.

...