Angular 6 - Как использовать Angular's httpClient для просмотра изменений в данных URI - PullRequest
0 голосов
/ 25 июня 2018

Итак, я пытаюсь что-то сделать, но чувствую, что мне не хватает информации. Я работаю с Angular 6 httpClient для получения данных из URI. У меня это работает нормально, чтобы получить данные один раз, но любые изменения в URI не обновляются без выполнения нескольких запросов на получение и нескольких подписок. Мне было интересно, как этот код должен работать для мониторинга изменений в URI.

let test = '';

getTestData(uriString) {
    return this.httpClient.get(uriString)
        .map((data) => {
            return data;
        });
}

this.getTestData('api/test')
    .subscribe(
        (info: any) => {
            this.test = info.result;
        },
        (error) => {
            console.log(error);
        }
    );

Я думаю, мои вопросы:

  • Это метод httpclient.get, устанавливающий соединение с этим uriString это можно отслеживать (поэтому, если значение в «api / test» изменяется, могу ли я увидеть эти изменения, не делая еще один запрос на получение?)
  • если это не так, чтобы постоянно отслеживать изменения в URI, нужно ли мне снова и снова вызывать метод "getTestData", чтобы увидеть какие-либо сделанные изменения (как в setInterval)? Я думал, что метод подписки должен видеть изменения, но пока он не работает так.

Буду признателен за любые разъяснения / помощь по этому вопросу. Спасибо.

1 Ответ

0 голосов
/ 25 июня 2018

Используя приведенный выше код, вы будете вызывать back-end API только один раз, затем дождаться окончания ответа HTTP и обработать результат в вашей подписке. Наблюдаемые завершаются впоследствии.

У вас есть две альтернативы:

Либо вы используете другую функцию создания наблюдателя RXJS для запуска нескольких вызовов вашего API (например, ìnterval), либо реализуете WebSockets как на клиенте, так и на сервере, что позволит "передавать" данные с сервера на клиент по изменениям.

Примером интервала будет:

timeInterval(1000).pipe(switchMap(() => this.httpClient.get(uriString)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...