我有非常簡單的代碼,但我無法理解它。對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) –