Angular检测何时发送请求并在Angular 6中完成

时间:2018-09-24 14:51:54

标签: angular request components angular6

我想知道如何以一种更好的方式做这样的事情:

const isLoading: Boolean = true;
this.sendRequest(resource)
      .subscribe(attachmentwithdata => {
        isLoading = false;
        saveAs(attachmentwithdata.data, attachmentwithdata.name);
      });

“我的方式”非常丑陋,我想知道你们通常是如何做到的。更具体地说,我正在尝试做的是显示一个微调器,并在请求仍在发出时阻止页面。 我尝试使用拦截器,但我认为它变得越来越复杂。我想创建一个足以在内部进行管理的组件。我当时在想通过Observable本身的组件?嗯,我必须调查更多。任何想法,将是有帮助的。谢谢大家。

3 个答案:

答案 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