angular - 连续休息 API http 调用 Angular 4

标签 angular rest http

我在这里寻找答案,但一无所获,所以我会继续尝试尽可能清楚地解释我的情况,希望我能找到答案。

情况如下:我正在构建一个使用 rest API 后端的 angular 4 SPA。 在我的一个组件中,我必须从后端(通过不同的方法)获取几组数据,并且我需要所有这些不同的数据集才能在我的组件中显示图表。

如果我只是在我的 Init 方法中进行连续的 http 调用,然后调用我的 process_data 方法,angular 在调用处理方法之前不会等待所有 http 响应。因此,当所有需要的数据都不一定存在时调用该方法,这可能会导致错误。

我现在的解决方案:我暂时实现的修复如下:

  • 我发出第一个 HTTP 请求,我订阅了它。
  • 在这个订阅中,我发出了第二个 http 请求,我也订阅了它
  • 以此类推每个后续的http请求
  • 在最后一个 .subscribe() 中我调用了我的处理方法。

结果是一个很大的 Init 方法,由于所有嵌套的 http 请求,很难读取/调试。 所以这个修复有效,但它很丑而且很难重用,这是一个严重的问题,因为我正在为一家公司开发这个。这让我想到了......

问题:是否有更好的(更清洁/标准/良好实践)方法来达到相同的结果?

TL;DR:有没有一种好方法可以发出几个连续的 http 请求并等待所有请求完成(并等待响应)然后再继续?

注意事项:虽然我正在为一家公司开发这个 SPA,但我只是一名实习生(因此,仍在学校,仍在学习绳索)。除了不是真正的工程师之外,我还不熟悉一般的 Angular 和 Web 开发。当然,如果我的问题的答案显而易见,我深表歉意。

其次,英语不是我的母语,所以对于我的帖子中与英语相关的错误,我也深表歉意。

我提前感谢大家的回答。

最佳答案

我相信你会在Flatmaps中找到你想要的。或在这个很棒的教程中找到的其他解决方案。

Flatmaps将帮助您使多个 HTTP 请求呈线性。

引用官方文档:

transform the items emitted by an Observable into Observables, then flatten the emissions from those into a single Observable

关于angular - 连续休息 API http 调用 Angular 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321953/

相关文章:

javascript - 更新/推送新数据到 NgRedux 状态

http - 使用查询参数执行 GET 请求

node.js - 为什么 Web 服务器仍然使用 http 1.1 而不是 http 2?

javascript - 子组件之间的通信 - 触发和更改

angular - 由于 `cross domain` 问题,无法从 `CORB` 获取数据

Angular 2动态组件加载ngOnChanges生命周期钩子(Hook)调用

.net - rabbitmq 的 REST API

Java仅返回父类(super class)的属性

web-services - 设计用于媒体转换的 REST 服务

python - 无法使用 cgi.FieldStorage 获取 POST 值