Сообщение Angular http и ожидание нескольких результатов

Я использую Angular 11, и мне нужно сделать http-вызов API, который выполнит процесс.

Итак, если я выполню этот вызов:

processData(data) {
    return this.httpClient.post('https://myurl/api/process', {
      data: data
    }, 
    { 
      headers: this.headers() 
    });
}

API запустит процесс на стороне сервера и сделает все необходимое.

Поскольку это займет время, мне нужно, чтобы Angular прослушивал и получал разные ответы, например, я мог бы заставить сервер отправлять процент выполнения.

Тогда Angular узнает, сколько времени осталось, и сообщит пользователю, и, надеюсь, не просто истечет время ожидания результата.

Можно ли это сделать в Angular, если да, то как?


person Tomazbyden2000    schedule 05.12.2020    source источник
comment
Это может вам помочь @tomazbyden2000 Ссылка: https://angular.io/guide/http#report-progress   -  person Arunkumar Ramasamy    schedule 05.12.2020


Ответы (2)


Вам нужно использовать reportProgress: true, чтобы показать прогресс любого HTTP-запроса. Если вы хотите видеть все события, включая ход передачи, вам также нужно использовать опцию observe: 'events' и возвращать Observable типа HttpEvent. Затем вы можете поймать все события (DownloadProgress, Response..etc) в методе компонента. Подробнее см. в https://angular.io/guide/http#listening-to-progress-events

person pynode    schedule 05.12.2020

Метод post возвращает наблюдаемый объект, который может срабатывать даже несколько раз. Просто используйте свой метод следующим образом:

processData(data).subscribe((res) => {
   console.log('The server has responded with :', res);
});

console.log('While I wait for the server to respond, I keep doing more stuff');
doMoreStuff();
person Jacopo Lanzoni    schedule 05.12.2020