【问题标题】:consecutive rest API http calls angular 4连续休息 API http 调用角度 4
【发布时间】:2017-07-26 17:02:51
【问题描述】:

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

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

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

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

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

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

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

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

注释:虽然我正在为一家公司开发此 SPA,但我只是一名实习生(因此,仍在学校,仍在学习中)。除了不是真正的工程师之外,我对 Angular 和 Web 开发也很陌生。当然,如果我的问题的答案很明显,我深表歉意。

其次,英语不是我的母语,所以我也为我的帖子中与英语相关的错误道歉。

提前感谢大家的回答。

【问题讨论】:

    标签: angular rest http


    【解决方案1】:

    我相信您会在 Flatmaps 或此出色教程中找到的其他解决方案中找到所需的内容。

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

    引用官方文档:

    将 Observable 发射的项目转换为 Observable,然后将这些项目的发射扁平化为单个 Observable

    【讨论】:

    • 您链接的教程中提出的使用 Observable.forkJoin 的解决方案确实是一种非常干净的方式来做我想做的事情,我强烈建议任何有同样问题的人使用这种模式。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多