我在 Lambda 表达式的 Observable 中为数组赋值时遇到了麻烦。
我有一个具有此属性的类:
usuarios: Usuario[];
我正在注入 Http 服务。
我有以下功能:
getUsuarios(): Usuario[] {
this._http.get("http://localhost:3000/db").map(data => data.json()).subscribe(data => {
this.usuarios = data["Usuarios"];
console.log(this.usuarios);
});
console.log(this.usuarios);
return this.usuarios;
}
对于某些事情,在控制台中,使用第一个控制台日志(lambda表达式中的那个)显示数据。
但如果我再次登录日志,这次在lambda表达式之外,this.usuarios
为空( undefined )。
为什么会这样?
答案 0 :(得分:1)
它确实正常工作,期望控制台输出应为:
undefined
...some data
原因是http发出异步调用意味着第一个console.log()在您收到来自http请求的响应之前不会执行。
第二个console.log()与http请求不在同一范围内,因此首先执行它。您可以阅读与您的问题here相关的更多信息。