我在这里寻找答案,但一无所获,所以我会继续尝试尽可能清楚地解释我的情况,希望我能找到答案。
情况如下:我正在构建一个使用 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/