我想知道如何以一种更好的方式做这样的事情:
const isLoading: Boolean = true;
this.sendRequest(resource)
.subscribe(attachmentwithdata => {
isLoading = false;
saveAs(attachmentwithdata.data, attachmentwithdata.name);
});
“我的方式”非常丑陋,我想知道你们通常是如何做到的。更具体地说,我正在尝试做的是显示一个微调器,并在请求仍在发出时阻止页面。 我尝试使用拦截器,但我认为它变得越来越复杂。我想创建一个足以在内部进行管理的组件。我当时在想通过Observable本身的组件?嗯,我必须调查更多。任何想法,将是有帮助的。谢谢大家。
答案 0 :(得分:0)
像您一样使用标记是一种非常可靠的做法。
答案 1 :(得分:0)
您可以传递可观察对象,然后用管道https://github.com/btroncone/learn-rxjs/blob/master/operators/utility/do.md轻击它。
类似的东西
registerObservable(o: Observable<any>): Observable<any> {
return o.pipe(tap(() => this.isEnded = true))
}
您需要订阅返回的observable,它的工作原理就像一个魅力
答案 2 :(得分:0)
对于每个HTTP请求的通用解决方案,请使用拦截器: https://angular.io/guide/http#intercepting-requests-and-responses
对于示例中使用的附件(响应时间较长的请求),您可能需要显示进度...然后使用: https://angular.io/guide/http#listening-to-progress-events