Как отменить HttpRequests при изменении компонента - PullRequest
0 голосов
/ 09 мая 2018

Я разрабатываю приложение с угловым 5.

Мне нужно остановить все запросы http при изменении / detroyiog компонентов.

пример: я открываю ListUsersComponent, запускается httpquery для получения списка пользователей, прежде чем этот запрос будет завершен, я открыл ListAdminsComponent. таким образом, в сети (браузер) у меня есть запрос, получающий список пользователей, все еще ожидающих ответа.

Я хочу остановить это, когда уничтожу ListUsersComponent.

как остановить запросы при смене компонента?

1 Ответ

0 голосов
/ 12 мая 2018

это решение:

@Injectable()
export class HttpCancelInterceptor implements HttpInterceptor {
  constructor(private httpCancelService: HttpCancelService) { }

  intercept<T>(req: HttpRequest<T>, next: HttpHandler): Observable<HttpEvent<T>> {
    return next.handle(req).takeUntil(this.httpCancelService.onCancelPendingRequests())
  }
}

CancelService

@Injectable()
export class HttpCancelService {
  private cancelPendingRequests$ = new Subject<void>()

  constructor() { }

  /** Cancels all pending Http requests. */
  public cancelPendingRequests() {
    this.cancelPendingRequests$.next()
  }

  public onCancelPendingRequests() {
    return this.cancelPendingRequests$.asObservable()
  }

}

ссылка: отмена

...