【发布时间】:2018-06-25 16:35:25
【问题描述】:
所以我正在尝试做某事,但感觉我错过了一条信息。我正在使用 Angular 6 httpClient 从 URI 获取数据。我可以很好地获取一次数据,但是如果不发出多个获取请求和多个订阅,URI 中的任何更改都不会更新。我想知道这段代码应该如何监控 URI 的变化。
let test = '';
getTestData(uriString) {
return this.httpClient.get(uriString)
.map((data) => {
return data;
});
}
this.getTestData('api/test')
.subscribe(
(info: any) => {
this.test = info.result;
},
(error) => {
console.log(error);
}
);
我想我的问题是:
- httpclient.get 方法是否与该 uriString 建立连接 可以监控(所以如果 'api/test' 中的值发生变化,我可以 在不发出另一个获取请求的情况下看到这些更改?)
- 如果不是这种情况,要持续监控对 URI 的更改,我是否需要一遍又一遍地调用“getTestData”方法来查看所做的任何更改(例如在 setInterval 中)?我认为 subscribe 方法应该会看到变化,但到目前为止它并没有那样工作。
对此的任何澄清/帮助将不胜感激。谢谢。
【问题讨论】:
-
httpClient在收到响应后完成。这意味着您需要再次致电get。如果您需要持续监控数据更改,您可能需要 websockets 或类似的东西。 -
首先,参数在 JavaScript/TypeScript 中按值传递。 S' 方法不可能知道作为参数传递的值已经改变。不,您不需要像 setInterval 那样一次又一次地发出请求。更改 URI 时需要发出新请求。这不会自行发生。如果通过“更改 URI”,您实际上并不是这个意思,而是指“当对相同 URI 的请求返回的值发生变化时”,那么如果不发出新请求,就无法知道这一点。
标签: angular httpclient angular6