我目前正在使用我设置的节点服务器并创建了一个/user-info
res.send({id: <my-id>, name: <my-display-name>})
On Angular我创建了一个global.service.ts
文件,它将使用http.get
调用此端点并订阅该数据并存储到我声明的两个变量中。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class Globals {
constructor(private http: HttpClient) { }
public id: string;
public name: string;
userInfo() {
this.http.get('/user-info').subscribe(
(data: any) => {
this.id = data.id;
}
);
console.log(this.id);
}
}
一旦我console.log(this.id)
,它就会返回undefined
。我已经在服务器端查看是否导致问题,但它返回一个字符串。
在我的server.js
文件(节点服务器)中,我正在使用express。这是终点:
app.get('/user-info', function(req, res) {
client.get('id', (err, data) => {
client.get('name', (err, reply) => {
res.send({id: data, name: reply})
})
})
})
我使用redis存储值'id'
和'name'
,client.get
只是用于从缓存中调用这些值的redis命令。我测试过只检查localhost:8000/user-info
,一切都很好。
我是否遗漏/误解了什么?谢谢!
答案 0 :(得分:1)
如果console.log仍在调用之外,它将在您收到响应之前执行。试试这个:
RM LSTAT PTRATIO MEDV
0 6.575 4.98 15.3 504000.0
1 6.421 9.14 17.8 453600.0
2 7.185 4.03 17.8 728700.0
3 6.998 2.94 18.7 701400.0
4 7.147 5.33 18.7 760200.0