【问题标题】:Angular http post and wait for multiple resultsAngular http 发布并等待多个结果
【发布时间】:2021-03-17 04:42:07
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

标签: angular typescript rxjs angular11


【解决方案1】:

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();

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 2017-09-03
      • 2019-10-07
      • 2017-08-14
      • 2018-04-05
      • 2014-05-11
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多