【问题标题】:why angular httpClient is reactive?为什么角度 httpClient 是反应式的?
【发布时间】:2017-12-02 06:50:14
【问题描述】:

我对使用 Angular httpClient 进行反应式编程有点困惑。
在这里反应有什么意义?

据我所知,当我们有一个持续的数据流时,反应式风格很有用,我们是否有可能在 angular httpClient 中拥有类似的东西?
例如,向服务器发送一个请求,并从服务器连续获得多个响应。
另外,我发现 observable 在从服务器获得响应时没有完成,所以我认为它在等待其他数据。

它是否为每个请求创建一个新的 observable?如果是,以后有必要退订吗?

【问题讨论】:

  • 您在这里提出了四个不同的问题。你能澄清你的一个单一焦点的问题吗?
  • 是的,但我认为它们是相互关联的。
  • “为什么 Angular httpClient 是响应式的?”的简单答案是 http 请求是异步的,可以从 RxJS 提供的实用程序中受益。根据您将如何使用从 httpClient 返回的数据,observable 在以编程方式向订阅者提供异步响应方面非常有帮助。
  • gist.github.com/staltz/868e7e9bc2a7b8c1f754 http请求是异步的,大部分会发出1个值然后完成。是的,每个请求都会创建新的 observables,不,您不需要取消订阅它们。
  • 我不明白你为什么投了反对票。我也有同样的疑问

标签: javascript angular rxjs reactive-programming


【解决方案1】:

我遇到的一个使用多个值的示例是进度事件
参考Angular httpClient Progress Events

http.request(req).subscribe(event => {
  // Via this API, you get access to the raw event stream.
  // Look for upload progress events.
  if (event.type === HttpEventType.UploadProgress) {
    // This is an upload progress event. Compute and show the % done:
    const percentDone = Math.round(100 * event.loaded / event.total);
    console.log(`File is ${percentDone}% uploaded.`);
  } else if (event instanceof HttpResponse) {
    console.log('File is completely uploaded!');
  }
});

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2018-03-07
    • 2020-01-27
    相关资源
    最近更新 更多