異步獲取數據我想創建一個標籤,顯示誰是登錄的用戶名:在AngularJS
<p style="color:white;font-weight:bolder;font-size:20px;padding-left:15px" title="Enter">{{userName}} Welcome</p>
在我的控制器我檢查,如果用戶被驗證:
$scope.initial = function() {
$http.get('Accounts/UserIsAuthenticated').success(function (response) {
// Accounts/UserIsAuthenticated check whether user is authenticated or not, and return bool value
debugger;
if (response == 'True') {
$rootScope.showLogin = false;
$rootScope.showWelcome = true;
$scope.userName = getUserName();
$rootScope.showLogout = true;
}
else {
$rootScope.showLogin = true;
$rootScope.showWelcome = false;
$rootScope.showLogout = false;
}
});
};
function getUserName() {
$http.get('Accounts/GetUserName').success(function (response) {
return response;
});
}
{{userName}}
雖然設置爲undefined
。我知道getUserName()
需要時間回覆,所以我該如何解決?
編輯:編輯我的代碼:
$scope.initial = function() {
$http.get('Accounts/UserIsAuthenticated').success(function (response) {
if (response == 'True') {
$rootScope.showLogin = false;
$rootScope.showWelcome = true;
getUserName().then(function (username) {
debugger;
$scope.username = username;
});
$rootScope.showLogout = true;
}
else {
$rootScope.showLogin = true;
$rootScope.showWelcome = false;
$rootScope.showLogout = false;
}
});
};
function getUserName() {
$http.get('Accounts/GetUserName');
}
但它不工作!問題是什麼?
的'return'在這段代碼不會真的返回任何東西。它在回調函數內部,它不能返回任何東西。它不在'getUserName'函數內,它可以返回一些東西,但是在那裏移動它並沒有幫助。一般來說,當處理異步方法時,你不會**返回*值*,你會**返回* promise *以後會有一個值。 (''return $ http.get(...'在這個例子中) – Claies