【发布时间】:2017-08-26 15:43:34
【问题描述】:
我是 nodejs/angular2 的新手。我对节点的异步行为及其返回角度服务有一个奇怪的问题。我遇到的问题是两个不同的角度组件,说组件 A 和组件 B 在其中注入了相同的角度服务。
服务器端是一个异步节点服务器,它需要一些时间来完成请求。问题是当应用程序从角度组件 A 路由到角度组件 B 时,有时对节点的请求是从组件 A 完成的,但由于我们目前路由到组件 B 响应去那里。 (组件 A 和 B 不能同时显示。一次只能看到一个)
因为组件 B 也订阅了相同的服务/方法,所以它会得到为组件 A 指定的返回结果。导致不正确的值。
组件 B 有没有办法只接收对其发出的请求的响应。
这两个组件都订阅了服务中的相同方法,因此:
这里的代码太大了,所以我要做sn-ps。
这是每个组件中的代码。
getNode(){
this.userService.getNode().subscribe(resNodeData => {
this.node = resNodeData;
if(this.node == null){
return null;
}
else{
// console.log(this.node);
}
});
}
来自服务层的代码:
export class UserService {
//call to node server async
getNode() {
return this.http.get("http://" + host + ":3000/api/namenode/" + this.clusterService.getCluster())
.map((res:Response) => res.json())
.catch(this._errorHandler);
}
}
我知道我的问题很长而且令人困惑。我将不胜感激。
【问题讨论】: