.. Извините, сэр, но не получил улучшения.

ользуюHttpInterceptor API нового AngularHttpClientModule и теперь застрял с ситуацией. Вот мой вариант использования.

В моем приложении, если какая-либо служба выполняет HTTP-вызов, я хочу сделать еще один тихий http-вызов перед ним и сохранить результаты локально. Как только тихий вызов завершен, только я продолжу http-вызов службы и верну его результат.

Вот что я делаю. (Используя HttpInterceptor)

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if (req.url.match(/api\//)) { // api call
           http.post('/auth/silentCall', {user: 123}).subscribe(
                     (data) => {
                        console.log(data);
                        const clone = req.clone({ setHeaders: { 'Authorization ': tokenService.getToken() } });
                        return  next.handle(clone).do((event: HttpEvent<any>) => {
                            if (event instanceof HttpResponse) {
                                console.log('Service's call response');
                            }
                        }, (err: any) => {
                            if (err instanceof HttpErrorResponse) {
                                console.log('Network call err', err);
                            }
                        });
                     },
                     (err) => {
                        if (err instanceof HttpErrorResponse) {
                           return Observable.throw(err); 
                        }
                 );
                } else {
        console.log('Not an api call..It's an auth call');
       return next.handle(req); // call original auth request.
    }
}

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

Ответы на вопрос(2)

Ваш ответ на вопрос