在角度2+中(组件=>服务A => ServiceB),需要帮助以了解流程

时间:2018-12-26 17:21:22

标签: angular6

在angular 2+中,我有一个组件A,它调用服务A,在其中进行一些更改,然后调用服务B(Http调用),并获取简单传递回服务A的数据,现在我需要订阅服务A可以看到数据,还可以订阅组件A来在那里显示数据?

为什么我需要在2个地方订阅,这意味着它两次进行了http调用(一点都不好)

通过订阅并进行所有操作并将该对象简单地发送回组件A以显示它,可以在Service A中获取和存储数据的最佳方法是什么?即使我尝试在服务A的订阅部分中创建一个变量,但是当我尝试将该变量记录在订阅块之外时。它是未定义的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在寻找答案时,我发现一种方法(或可以称为解决方法)是与HttpClient一起使用“ async-await”功能。

基本上会等到同一行执行,直到得到结果(成功或错误)。然后继续执行下一行。

例如:  async myFunction() { this.myResult = await this.httpClient.get(this.url).toPromise(); console.log('No issues, it will wait till myResult is populated.'); }

说明:

在函数前添加异步,以使其知道执行需要等待,并且期望的位置(主要是在http服务调用处,因为我需要等待直到获得结果)我们才等待。因此执行将需要等待一段时间才能返回响应。然后。只需返回变量。