在angular 2+中,我有一个组件A,它调用服务A,在其中进行一些更改,然后调用服务B(Http调用),并获取简单传递回服务A的数据,现在我需要订阅服务A可以看到数据,还可以订阅组件A来在那里显示数据?
为什么我需要在2个地方订阅,这意味着它两次进行了http调用(一点都不好)
通过订阅并进行所有操作并将该对象简单地发送回组件A以显示它,可以在Service A中获取和存储数据的最佳方法是什么?即使我尝试在服务A的订阅部分中创建一个变量,但是当我尝试将该变量记录在订阅块之外时。它是未定义的。
感谢您的帮助。
答案 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服务调用处,因为我需要等待直到获得结果)我们才等待。因此执行将需要等待一段时间才能返回响应。然后。只需返回变量。