Lambda表达“无法正常工作”

时间:2017-10-10 23:49:50

标签: angular typescript lambda

我在 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 )。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

它确实正常工作,期望控制台输出应为:

undefined
...some data

原因是http发出异步调用意味着第一个console.log()在您收到来自http请求的响应之前不会执行。
第二个console.log()与http请求不在同一范围内,因此首先执行它。您可以阅读与您的问题here相关的更多信息。