0

我正在使用 Angular 11,我需要对将执行进程的 api 进行 http 调用。

所以如果我执行这个调用:

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

该 api 将在服务器端启动一个进程并完成它的工作。

因为这需要时间,所以我需要 Angular 来监听并获得不同的响应,例如,我可以让服务器发送进度百分比。

然后 Angular 会知道还剩多长时间并告诉用户,希望不只是超时等待结果。

这可以在 Angular 中完成,如果可以的话怎么做?

4

2 回答 2

2

您需要使用reportProgress: true来显示任何 HTTP 请求的一些进度。如果您想查看所有事件,包括传输进度,您还需要使用observe: 'events'option 并返回一个 Observable 类型HttpEvent。然后您可以在组件方法中捕获所有事件(DownloadProgress、Response..etc)。在https://angular.io/guide/http#listening-to-progress-events中查找更多详细信息

于 2020-12-05T09:03:03.980 回答
0

该方法post返回一个 observable,它甚至可以触发多次。只需按以下方式使用您的方法:

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();
于 2020-12-05T09:03:53.090 回答