Я использую службу Angular HttpClient для вызова веб-службы, выполнение которой может занять несколько минут. Я хотел бы получать статус выполнения (включая процент и сообщение) для отображения в браузере перед окончательным ответом. Есть ли в Angular механизм для поддержки этого?
Я пытался отправить статус 100 с сервера с информацией о ходе выполнения как часть заголовка, но это не работает. HttpClient поддерживает API ProgressEvent, но только для отслеживания загрузки/выгрузки запроса, состоящего из нескольких частей.
Я мог бы создать другую службу, которую затем опрашивал бы по таймеру, но есть ли другой более стандартный способ добиться этого?





Вы можете сделать что-то вроде создания BehaviorSubject для сообщений в веб-службе и подключить его в своих компонентах для ответа. Вы просто отправляете сообщение в BehaviourSubject. Затем, когда вы хотите, чтобы он исчез, отправьте пустое сообщение. Взгляните на то, что предлагает RxJs.
Вы пробовали Наблюдаемые
Observables provide support for passing messages between publishers and subscribers in your application. Observables offer significant benefits over other techniques for event handling, asynchronous programming, and handling multiple values.
Обновлять
Вы можете использовать таймер, который является основным вариантом, если выше не работает.
const intervalId = setInterval(() => {
if (CHECK IF DONE) {
clearInterval(intervalId);
// DO THE THING YOU WANT AFTER COMPLETE
}
else {
// GET PROGRESS
}
}, 1000);
@DalbirSingh: если у вас есть другая конечная точка для получения прогресса, таймер - еще один вариант.
Я не думаю, что у angular есть стандартный способ сделать это.
На мой взгляд, вам нужно будет сделать два запроса к серверу.
Я использую методы публикации и запроса HttpClient для обращения к внутреннему серверу приложений (написанному на C++). Сервер получает запрос и отправляет ответ. На один запрос я могу получить один ответ в своем приложении Angular. Это прекрасно работает. Я пытаюсь получить ответы от сервера, чтобы получить информацию о ходе выполнения. Если сервер отправляет ответ с HTTP-статусом 200, клиент больше не может получать ответы.