我正在使用Angular HttpClient服务调用一个Web服务,这可能需要几分钟才能完成。我想收到进度状态(包括百分比和消息),以在最终响应之前显示在浏览器上。 Angular是否有支持此功能的机制?
我尝试从服务器发送100状态,并将进度信息作为标题的一部分,但这不起作用。 HttpClient支持ProgressEvent API,但这仅用于跟踪多部分请求的上传/下载。
我可以创建另一个服务,然后在计时器上进行轮询,但是还有另一种更标准的方法来实现这一点吗?
答案 0 :(得分:0)
您可以执行类似的操作,为Web服务中的消息创建BehaviorSubject,然后将其连接到组件中以进行响应。您只需在BehaviourSubject中发送消息。然后,当您希望它消失时,发送空白消息。看看RxJ带来了什么。
答案 1 :(得分:0)
您尝试过Observables
可观察对象为发布者之间传递消息提供了支持 和您的应用程序中的订阅者。可观察物提供了重要的 优于其他事件处理技术(异步) 编程并处理多个值。
更新
如果上述方法不起作用,您可以使用计时器作为主要选择。
const intervalId = setInterval(() => {
if (CHECK IF DONE) {
clearInterval(intervalId);
// DO THE THING YOU WANT AFTER COMPLETE
}
else {
// GET PROGRESS
}
}, 1000);
答案 2 :(得分:0)
我不认为用angular来做这件事是标准的方法。
我认为您似乎需要对服务器执行两个请求