我有非常简单的代码,但我无法理解它。对Angular2的承诺承诺
我有它返回当前用户名服务
所以我做下面进入登录网页的用户名和显示。请注意当前登录的用户是“演示”
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
Shoulnd't两种情况下,这显示“演示”。 (内外) 为什么外界未定义?
请帮我理解这一点。
这是因为这个调用是异步的。它开始运行'getUsername()'方法,但在运行时继续运行。所以它首先打到外部日志,其中'this.username'仍然是未定义的,那么方法结束,你会得到Inside log –
它与Angular 2没有任何关系。这就是异步调用的工作原理, ://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests) –