对Angular2承诺感到困惑

时间:2016-10-20 15:52:31

标签: javascript angular

我的代码非常简单,但我无法理解它。

我有一个返回当前用户名的服务

所以我正在关注以获取用户名并在网页上显示。请注意当前登录的用户是“demo”

 this.userData.getUsername().then(value  => {
this.username = value ;   
console.log("Inside -->" + value);
});
console.log("Outside -- >" + this.username);

所以现在我运行这段代码。我没有在this.username

中获得用户名

这是console.log的输出 Outside -- >undefined Inside -->demo
在这两种情况下,不要显示“演示”。 (内在和外在) 为什么外面是未定义的?

请帮助我理解这一点。

1 个答案:

答案 0 :(得分:2)

这是预期的行为。

这是稍后返回的异步调用

this.userData.getUsername().then(value  => {
  this.username = value ;   
  console.log("Inside -->" + value);
});

在此期间继续执行

console.log("Outside -- >" + this.username);

当异步调用最终完成时,Promise执行函数

value  => {
  this.username = value ;   
  console.log("Inside -->" + value);
}

早先通过了。